更改多个对象上相同字段的值 - JS

时间:2015-08-05 12:10:20

标签: javascript angularjs underscore.js

我的范围the_data上有一个对象,其中有多个对象。

一个对象important_entries里面有一个对象列表。

important_entries内的对象都有我想要更改的特定字段 - field_I_want_to_change。每个对象的名称都是它的ID。

我想要做的是迭代important_entries对象及其中的每个对象,更改每个field_I_want_to_change字段的值。

有人可能会给我一些指示,说明如何最好地完成这项工作?我可以访问下划线库,如果可以的话。

以下是我的the_data对象的粗略蓝图,对于任何语法错误,我深表歉意。

the_data : {
    some_data : {},
    some_data : {},
    important_entries: {
        xxxccc : {
            field_I_want_to_change: 'some data'
        },
        cccfff : {
            field_I_want_to_change: 'some data'
        },
        tttyyy : {
            field_I_want_to_change: 'some data'
        },
    },
    some_data : {},
    some_data : {}
}

2 个答案:

答案 0 :(得分:4)

使用下划线库

var thedata =  {
    some_data : {},
    some_data : {},
    important_entries: {
        xxxccc : {
            field_I_want_to_change: 'some data'
        },
        cccfff : {
            field_I_want_to_change: 'some data'
        },
        tttyyy : {
            field_I_want_to_change: 'some data'
        },
    },
    some_data : {},
    some_data : {}
}

 _.each(thedata.important_entries, function(entry) {
    entry.field_I_want_to_change = "new calue"
 })

如果您不确定“field_I_want_to_change”对象是否始终存在,请在_.has之前进行一次小检查

答案 1 :(得分:2)

为什么不让你loop through javascript object 改变字段?

p = the_data['important_entries'];
for (var key in p) {
    if (p.hasOwnProperty(key)) {
        p[key].field_I_want_to_change = 'some data';
    }
}