如何将字符串数组中的新数据依次添加到对象数组中?

时间:2016-09-29 00:14:05

标签: javascript arrays sorting

假设我有对象数组:

originalData = [
  {
    "id": 1
  },
  {
    "id": 2
  },
  {
    "id": 3
  },
  {
    "id": 4
  },
  {
    "id": 5
  },
  {
    "id": 6
  }
]

我有一串字符串:

newData = ['1','2','3']

如何按顺序将newData推送到originalData

预期结果应如下:

originalData = [
  {
    "id": 1,
    "color":'1'
  },
  {
    "id": 2,
    "color":'2'
  },
  {
    "id": 3,
    "color":'3'
  },
  {
    "id": 4,
    "color":'1'
  },
  {
    "id": 5,
    "color":'2'
  },
  {
    "id": 6,
    "color":'3'
  }
]

这是我的解决方法:

originalData.forEach(function (object,i) {
    object.color = newData[i]
});

2 个答案:

答案 0 :(得分:1)

使用变量j并随着时间的推移重置它。

var j = 0;
originalData.forEach(function (object,i) {
    object.color = newData[j];
    j += 1;
    if(j > newData.length)
        j = 0;
});

答案 1 :(得分:0)

根据newData数组长度动态重置计数器。

originalData = [{"id": 1},{"id": 2},{"id": 3},{"id": 4},{"id": 5},{"id": 6}];
newData = ['1','2','3'];
for(var i = 0, j=0; i < originalData.length; i++, j++) {
    originalData[i].color = newData[j];
    if(j == newData.length -1){
        j = -1;
    }
}

console.log(originalData);