用附加元素替换数组对象

时间:2018-03-01 06:25:39

标签: javascript arrays angular typescript ecmascript-6

我有一个包含iddes元素的数组。我想在value:0中添加array之类的额外元素。所以我用循环尝试了它并完成了它。

let data = [
    {
        "id": 1001,
        "des": "aaa"
    },
    {
        "id": 1002,
        "des": "aaa"
    }
];

for (let i = 0; i < data.length; i++) {
    let tempObj = {
        "id": data[i].id, "des": data[i].des, "value": 0
    }
    data[i] = tempObj;
}

有可能没有循环吗?在javascript中,任何JavaScript函数都可用吗?

3 个答案:

答案 0 :(得分:1)

如果没有循环,则无法执行此操作,但您可以使用Array#map方法和Object.assign方法(或使用spread syntax in ES6)来简化代码。

let data = [{
    "id": 1001,
    "des": "aaa"

  },  {
    "id": 1002,
    "des": "aaa"
  }
];

var res = data.map(o => Object.assign({
  value: 0
}, o));


console.log(res);

// or alternatively you can use spread syntax
var res1 = data.map(o => ({ ...o, value: 1 }));


console.log(res1);

答案 1 :(得分:1)

您可以使用map(循环并转换数组的每个元素)和扩展运算符(... - 允许您轻松地将对象的所有属性复制到新对象):

data.map(x => ({ ...x, value: 0 }));

答案 2 :(得分:1)

您可以在数组上map并使用spread operator syntax

let data = [{
              "id": 1001,
              "des": "aaa"

            },

            {
                "id": 1002,
                "des": "aaa"

            }
        ];
    
data = data.map(obj => ({...obj, value: 0}))
console.log(data)