我有一个像这样的空对象数组:
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;颜色"数组从一开始?谢谢你的帮助
答案 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]可用于获取颜色名称。