用附加元素替换数组对象

问题描述 投票:-2回答:4

我有一个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函数都可用吗?

javascript arrays angular typescript ecmascript-6
4个回答
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
投票

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

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

1
投票

你可以使用.map()但它无论如何都会遍历内部的所有元素,尽管它看起来不像一个。

我正在使用Object.assign()来创建新对象。

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

let newData = data.map(el => Object.assign( el, {value: 0} ));
console.log(newData);

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)
© www.soinside.com 2019 - 2024. All rights reserved.