의 특성 'CONCAT'을 읽을 수 없습니다, 나는로 시작하는 정의되지 않은
국가 단위 ---->고객보고 그룹 ---->고객
같이 개체의 멀티 레벨을 고객보고 그룹과 이후의 각각 다른 고객을 보유 서로 다른이각 국가 단위
코드에서변수 이름이이 menuData라는 다단계 객체로 표현된다
CU ----> CRG ---> 고객 인 : 내가 원하는 것을
menuData = {
cu1: {
CRG3: {
Customer1: {},
Customer5: {}
},
CRG7: {
Customer3: {},
Customer2: {},
Customer7: {}
}
},
cu4: {
CRG1: {
Customer2: {},
Customer4: {}
},
CRG3: {
Customer4: {}
}
}
};
할일은 다단계 객체에서 각 레벨의 고유 ID를 구성하는 것입니다. 예를 들어 고객 단위의 ID도 동일하게됩니다.
cu1 및 CU2 그래서 ID가 세제곱 + CU1 고객에 대한 + crg4
에서와 CRG 구성됩니다 고객보고 그룹에 대한
에 :CU1 + crg4 + customer6; 내가 무슨 짓을했는지
이 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;
};
내가 가진 오류는
나는 것입니다 노력 무슨 정의되지 않은
의 특성 'CONCAT'을 읽을 수 없습니다 , 그것이 정의되지 않았다고 말하기 때문에, 그것으로 정의하지 않으면 정의하려고합니다.
if (!(ids[cu] in ids)) {
ids[cu] = {};
ids[cu][crg] = ids[cu].concat(crg);
}
정의되지 않은 경우 값을 정의하고 삽입하십시오. 그러나 정의 된 경우 else ids [cu] [crg] = ids [cu] .concat (crg);
왜이 오류가 발생합니까? 다중 레벨 객체에서 ID를 가져 오는 방법은 무엇입니까?
편집, excpected 출력
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'은'Object'가 아니라'Array'의 메소드입니다 [Array.prototype.concat] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array)/concat). –
예상되는 출력은 무엇입니까? – brk