gpt4 book ai didi

javascript - 无法读取未定义的属性 'concat'

转载 作者:行者123 更新时间:2023-12-03 06:18:03 27 4
gpt4 key购买 nike

首先,我有多个层次的实体,如下所示

国家/地区单位 ----> 客户报告组 ----> 客户

每个国家/地区单位都有不同的客户报告组,并且每个后者都有不同的客户

代码中的变量名称是

cu ----> crg ---> 客户

这在一个名为 menuData 的多级对象中表示:

menuData = {
cu1: {
CRG3: {
Customer1: {},
Customer5: {}
},
CRG7: {
Customer3: {},
Customer2: {},
Customer7: {}
}
},
cu4: {
CRG1: {
Customer2: {},
Customer4: {}
},
CRG3: {
Customer4: {}
}
}
};

我想做的是为多级对象中的每个级别构建唯一的ID,例如客户单位的ID将是相同的

cu1 和 cu2 等

对于客户报告组,ID 将由 cu + crg 组成,如下所示cu1+crg4

对于客户:

cu1+crg4+客户6;

我所做的是一个名为 getIds 的函数

var getIds = function(menuData) {
var ids = {};
for (cu in menuData) {
ids[cu] = cu;
for (crg in menuData[cu]) {
if (!(ids[cu] in ids)) {
ids[cu] = {};
ids[cu][crg] = ids[cu].concat(crg);
} else ids[cu][crg] = ids[cu].concat(crg);
for (customer in menuData[cu][crg]) {
if (!ids[cu][crg]) {
ids[cu][crg] = {};
ids[cu][crg][customer] = ids[cu][crg].concat(customer);
} else ids[cu][crg][customer] = ids[cu][crg].concat(customer);
}
}
}
console.log(ids);
return ids;
};

我得到的错误是

Cannot read property 'concat' of undefined

我尝试过的是,因为它说它是未定义的,所以如果它尚未定义,我会尝试定义它

if (!(ids[cu] in ids)) {
ids[cu] = {};
ids[cu][crg] = ids[cu].concat(crg);
}

如果未定义,则定义它并插入值,但如果已定义,则仅分配值否则 ids[cu][crg] = ids[cu].concat (crg );

为什么我会收到此错误?以及如何获取多级对象中的 id?

<小时/>

编辑,预期输出为

ids = {
"cu1": {
"cu1+CRG3": { "cu1+CRG3+Customer1":{}, "cu1+CRG3+Customer5":{} },
"cu1+CRG7": { "cu1+CRG7+Customer3":{}, "cu1+CRG7+Customer2":{}, "cu1+CRG7+Customer7":{} }
},
"cu4": {
"cu4+CRG1": { "cu4+CRG1+Customer2":{}, "cu4+CRG1+Customer4":{} },
"cu4+CRG3": { "cu4+CRG3+Customer4":{}}
}
}

最佳答案

您的代码的问题是您正在使用对象来存储数据,并且对象没有“concat”方法,只有数组具有“concat”方法。您的对象必须如下所示才能工作:

 menuData = [
"cu1": [
"CRG3": [ "Customer1":{}, "Customer5":{} ],
"CRG7": [ "Customer3":{}, "Customer2":{}, "Customer7":{} ]
],
"cu4": [
"CRG1": [ "Customer2":{}, "Customer4":{} ],
"CRG3": [ "Customer4":{}]
]
]

这是一个引用:MDN Array.concat()

在 JS 中令人困惑的是对象属性可以像数组一样被访问。

添加预期输出后更新:

好吧,我认为 concat 不是解决您问题的正确解决方案。

尝试一下这样的事情:

var ids = {};

var menuData = {
cu1: {
CRG3: {
Customer1: {},
Customer5: {}
},
CRG7: {
Customer3: {},
Customer2: {},
Customer7: {}
}
},
cu4: {
CRG1: {
Customer2: {},
Customer4: {}
},
CRG3: {
Customer4: {}
}
}
};

for (propKeyLevel1 in menuData){
ids[propKeyLevel1] = {};
var propLevel1 = ids[propKeyLevel1];
for(propKeyLevel2 in menuData[propKeyLevel1]){
propLevel1[propKeyLevel1+"+"+propKeyLevel2] = {};
var propLevel2 = propLevel1[propKeyLevel1+"+"+propKeyLevel2];

for(propKeyLevel3 in menuData[propKeyLevel1][propKeyLevel2]){
propLevel2[propKeyLevel1+"+"+propKeyLevel2+"+"+propKeyLevel3] = {};
}
}

}

console.log(ids);

关于javascript - 无法读取未定义的属性 'concat',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38993585/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com