如何在另一个位置的对象数组中添加对象?

时间:2020-02-09 11:41:06

标签: javascript arrays node.js reactjs react-redux

我正在研究React组件。要求是在对象数组内的备用位置添加一个新对象,例如下方:

arr1 = [{test: 1},{test: 2},{test: 3},{test: 4}]

预期输出:

arr1 = [{test: 1},{dummy:1},{test: 2},{dummy:1},{test: 3},{dummy:1},{test: 4}]

在es6中有没有办法做同样的事情?

3 个答案:

答案 0 :(得分:4)

要获取所需的 数组,可以结合使用concat方法和reduce

var array = [{test: 1},{test: 2},{test: 3},{test: 4}];
var result = array.reduce((res, item) => res.concat(item, {dummy: 1}), []).slice(0, -1);
    
console.log(result);

由于这会在数组中的每个元素之后添加{dummy: 1}对象,因此只需使用

.slice(0, -1)

为您的给出的数组中的 last 元素添加一个 exception

如果要修改原始数组 ,可以使用splice方法。

var array = [{test: 1},{test: 2},{test: 3},{test: 4}];
for(i = 0;i < array.length - 1; i = i + 2){
  array.splice(i + 1, 0, {dummy: 1});
}
console.log(array);

答案 1 :(得分:1)

如果可以的话,我喜欢使用地图。易于理解和维护。

因此,首先创建一个数组数组,然后将其扁平化为单个数组。

MongoTemplate

答案 2 :(得分:1)

要修改原始数组(而不是创建一个新数组),可以首先生成需要在其中插入新项目的索引,然后使用Array.prototype.splice()

const a = [{test: 1}, {test: 2}, {test: 3}, {test: 4}];

Array.from({length: a.length - 1}, (_, i) => i * 2 + 1)
     .forEach(i => a.splice(i, 0, {dummy: 1}));

console.log(a);