在Javascript / Jquery中子集和编辑对象数组

时间:2016-01-22 16:45:12

标签: javascript jquery arrays javascript-objects

我在Javascript中有一个对象数组,我希望根据键值匹配进行子集化。原则上我想访问我的数组js_obj,更改cond为真的一些对象,然后继续。

让我们说阵列看起来像这样

js_obj = [{
    word: "airport",
    pic: "<img id='pic' src='../images/location/airport.png'/>",
    cat: "location",
    type: "undetermined"
}, {
    word: "station",
    pic: "<img id='pic' src='../images/location/station.png'/>",
    cat: "location",
    type: "undetermined"
}]

我现在想要访问js_obj .word == "station",而我想要将此.type更改为"type_abc"

我能够使用each并选择条件适用的对象并根据需要更改其.type,但我想在原始数组中执行此操作。我不只是想过滤掉这个对象,但是找到它,编辑它,并让数组保持修改状态。 我发现相关帖子引用了underscore.js,但我想我不知道要找哪种方法。

有人可以帮我解决这个索引/子集问题吗?

1 个答案:

答案 0 :(得分:2)

循环数组,检查条件并进行修改会将其保留在原始数组中:

function modifyArrOfObjs(arr, key, condition, updateKey, updateValue) {
    arr.forEach(function(obj) {
        if (obj[key] == condition) {
            obj[updateKey] = updateValue;
        }
    });
}

modifyArrOfObjs(js_obj, "word", "station", "type", "type_abc");