【问题标题】:Subsetting and editing array of objects in Javascript/Jquery在 Javascript/Jquery 中设置和编辑对象数组
【发布时间】:2016-01-22 16:45:12
【问题描述】:

我在 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 的相关帖子,但我想我不知道要查找哪种方法。

谁能帮我解决这个索引/子集问题?

【问题讨论】:

  • 除非你真的克隆了数组,否则改变对象中的属性会改变数组吗?
  • @adeneo 这不是问题。但主要是我想维护数组结构。真正的名字真的不太重要。

标签: javascript jquery arrays javascript-objects


【解决方案1】:

循环数组,检查条件和修改会保留在原来的数组中:

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");

【讨论】:

    猜你喜欢
    • 2019-09-07
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多