在angular.foreach循环中重置数组值

时间:2017-05-08 06:17:55

标签: javascript angularjs arrays foreach

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

var a = [ {}, {}, {}, {}, {}, {} ];

一系列属性:

var colors = ["red", "green", "blue"];

我需要在"颜色"中分配每种颜色。对于" a"的每个元素带有角度的foreach数组。但是" a"的长度数组大于"颜色"。我想通过圆圈"分配颜色"所以结果必须是这样的:

var a = [
    {color: "red"},
    {color: "green"},
    {color: "blue"},
    {color: "red"},
    {color: "green"},
    {color: "blue"},
    {color: "red"}
];

angular.forEach(a, function(elem, index) {
  if (a.length > colors.length) {
    // .......                       
  }
  elem.color = colors[index];
});

问题:是否有某种方法可以重置foreach的索引以开始循环#34;颜色"数组从一开始?谢谢你的帮助

2 个答案:

答案 0 :(得分:3)

尝试javascript map这样的功能

var a = [ {}, {}, {}, {}, {}, {}, {} ]; 
var colors = ["red", "green", "blue"];

a = a.map(function(o,i){
    var color =  (colors[i]) ? colors[i] : callFunc(i);    
    o.color =color;
    
    return o;
    
    function callFunc(i){
       var diff = (i - colors.length)% (colors.length)
       return colors[diff]
    }
})

console.log(a)

答案 1 :(得分:0)

你可以简单地在foreach里面有一个计数器。在每次迭代增量中,我喜欢i ++,一旦达到颜色数组的长度,只需将其重置为i = 0,颜色[i]可用于获取颜色名称。