JavaScript - 通过数组中的ID查找对象并进行修改

时间:2014-08-11 10:43:20

标签: javascript arrays object underscore.js

请注意,以下方案仅用于演示目的。

让我们假设我有一个以下的对象数组:

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;
            }
        };



    }
};

1 个答案:

答案 0 :(得分:1)

以下是我能想到的一些方法

1)更改您的数据结构以使用id作为键。即

4345345345:     猫:{1:{         猫:“test1”     },2:{         猫:“test2”     }}

2)或者你可以根据id创建一个临时查找表,直接查看对象的实际对象;很明显,您只会创建一次查找表,或者只在数据发生变化时创建查找表。这将使您的运行时从O(n)到O(1)。