繁体   English   中英

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

[英]Reset arrays value inside angular.foreach loop

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

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

以及一系列属性:

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

我需要将“颜色”中的每种颜色分配给带有角度foreach的“a”数组的每个元素。 但是“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的索引,从头开始循环“colors”数组? 感谢帮助

尝试这个

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

a.forEach(function(item,key){
    item.color = colors[key % colors.length];
})
console.log(a)

试试这样的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) 

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM