迭代对象数组并使用数组中的值替换值

时间:2014-07-10 19:29:58

标签: javascript jquery underscore.js

我有一个像这样的对象数组:

[{_colorIndex: 0,name: "ATV Sport"},{_colorIndex: 1,name: "Sport"}]

我想循环遍历该数组,并将每个_colorIndex值替换为颜色数组中的值。 阵列:

["#0E5B7E", "#A871A8"]

结果:

[{_colorIndex: "#0E5B7E",name: "ATV Sport"},{_colorIndex: "#A871A8",name: "Sport"}]

最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

假设colors数组总是与对象数组相同或大于:

for (var i = 0; i < obj.length; i++) {
    obj[i]._colorIndex = colorArray[i];
}

答案 1 :(得分:0)

您可以使用map函数,因为它是不可变的。不幸的是,它只支持IE9 +。

var data = [{_colorIndex: 0,name: "ATV Sport"},{_colorIndex: 1,name: "Sport"}];
var colors = ["#0E5B7E", "#A871A8"];

function replaceColors(data, colors) {
  return data.map(function(item) {
    var colorIndex = parseInt(item._colorIndex,10);
    if (!isNaN(colorIndex) 
           && (colorIndex > -1)
           && (colorIndex < colors.length)) 
        item._colorIndex = colors[colorIndex]
    return item;
  });
}

var newData = replaceColors(data, colors);