对象有一个非常复杂的用例,我很好奇这样做的正确方法是什么。
请在此处查看示例代码:http://jsfiddle.net/upp3px3y/1/
基本上,我有一个对象(var对象),里面有多个对象。然后我有一个对象数组(var returnedData),其条目是对象。我基本上想要将对象内部的对象,通过name属性匹配到正确的对象(在var对象内),然后将其作为单独的属性添加到该对象...
数据的理想状态如下:
people: {
p1: {
name: "richard",
nationality: "USA",
data: {
name: "richard",
number: "11111",
city: "new york"
}
},
p2: {
name: "chris",
nationality: "USA",
data: {
name: "chris",
number: "11111",
city: "new york"
}
}
}
我还没有看到很多关于SO的文档和问题,只要能够处理这么多嵌套对象。我甚至不确定如何处理这个问题,因此非常感谢任何建议。
我觉得答案可能与使用Object.keys(obj)有关,但我不确定在另一个对象中遍历对象的最佳方法是什么。
提前致谢!
答案 0 :(得分:1)
我会遍历数组,并尝试将每个索引对象的名称与obj的嵌套对象之一进行匹配。这是我为你写的一个例子。
注意:我将var对象重命名为" obj",因为它太容易匹配Object。
顶级"对于In"适用于上层"注册,非注册"嵌套" For In"是为了穿越人。在对象属性中使用变量时,需要使用括号表示法。
JSFIDDLE:http://jsfiddle.net/biz79/upp3px3y/5/
JS:
for ( var i = 0; i< returnedData.length; i++) {
for ( var keys in obj ) {
if ( obj.hasOwnProperty(keys) ) {
for (var propname in obj[keys].people) {
if (obj[keys].people.hasOwnProperty(propname)) {
if ( obj[keys].people[propname].name === returnedData[i].name ) {
// when you find a match, add 'data' property and append data object.
obj[keys].people[propname].data = returnedData[i];
}
}
} // end for-in
}
} // end for-in
} // end for
如果有帮助,请告诉我。