【问题标题】:Add field to a new JavaScript array copy将字段添加到新的 JavaScript 数组副本
【发布时间】:2016-03-03 14:29:20
【问题描述】:

我有一个 JavaScript 数组,其结构如下:

[{id:'id1', container:'3', routing:'4'},{id:'id2', container:'2', routing:'5'},..]

现在通过“push”命令,我能够制作这个数组的副本。我的问题是如何在新数组中添加一个新元素(NEWFIELD),变成这样:

[{id:'id1', container:'3', routing:'4',NEWFIELD:'X'},{id:'id2', container:'2', routing:'5',NEWFIELD:'Y'},..]

【问题讨论】:

  • 如何计算或获取newfield的值?
  • 通过其他2个字段的划分。像 NEWFIELD=routing/container 这样的东西。 @nikhil

标签: javascript arrays json


【解决方案1】:

你可以试试下面的方法

var arr = [{id:'id1', container:'3', routing:'4'},{id:'id2', container:'2', routing:'5'},..];

var new_arr = arr.map(function(item){
    var clone = Object.assign({}, item); // Objects are pass by referenced, hence, you need to clone object
    clone.NEWFIELD = clone.routing/clone.container;
    return clone;
});

【讨论】:

    【解决方案2】:
    var arr = [{id:'id1', container:'3', routing:'4'},{id:'id2', container:'2', routing:'5'}];
    
     // clone an array
    var newArr = arr.map(function(e) {
        return JSON.parse(JSON.stringify(e));
    });
    
    // add new field
    newArr.forEach(function(e) {
        e['NEWFIELD'] = e.routing / e.container;
    });
    
    console.log(arr);
    
    console.log(newArr);
    

    【讨论】:

    • 他的标签 JSON 让我很困惑。
    猜你喜欢
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 2018-06-22
    • 1970-01-01
    • 2022-10-25
    相关资源
    最近更新 更多