请注意,以下方案仅用于演示目的。
让我们假设我有一个以下的对象数组:
var obj = [{
id: 4345345345,
cat: [{
id: 1,
cat: "test1"
}, {
id: 2,
cat: "test2"
}]
}, {
id: 3453453421,
cat: [{
id: 1,
}, {
id: 2,
}]
}];
我的目标是:
#id 4345345345
在数组中查找对象,向其添加属性selected : true
#id 4345345345
的此对象中,找到#id 2
的猫,添加属性
selected : true
到它<小时/> 下面的工作,但是如果我的阵列有1000多个对象,它感觉有点浪费,你能不能建议任何更清洁/聪明的解决方案(可能使用下划线)?
for (var i = 0; i < obj.length; i++) {
var parent = obj[i];
if (parent.id === 4345345345) {
parent.selected = true;
for (var j = 0; j < parent.cat.length; j++) {
var sub = parent.cat[j];
if(sub.id === 2) {
sub.selected = true;
}
};
}
};
答案 0 :(得分:1)
以下是我能想到的一些方法
1)更改您的数据结构以使用id作为键。即
4345345345: 猫:{1:{ 猫:“test1” },2:{ 猫:“test2” }}
2)或者你可以根据id创建一个临时查找表,直接查看对象的实际对象;很明显,您只会创建一次查找表,或者只在数据发生变化时创建查找表。这将使您的运行时从O(n)到O(1)。