如何一次循环2个数组并将数组中的颜色分配给另一个数组的每个值

时间:2017-06-11 08:04:05

标签: javascript jquery arrays function loops

我有2个数组。一个是颜色数组,另一个是对象(项)数组。

我想将第一个数组的颜色分配给第二个数组中的每个对象。

阵列一:

var colours = ["#5cbae6", "#b6d957", "#fac364"];

第二阵列:

var items = [ itemOne, itemTwo, itemThree, itemFour, itemFive , itemSix.. ];

项目取决于用户。用户可以提供一个项目或30个项目。因此,在某些情况下,颜色将少于项目,在某些情况下,它们会更多。

我想要的是遍历"项目"数组和每个项目从数组中分配颜色"颜色"

示例:

item one = 5cbae6
item two = b6d957
item three = fac364
item four = 5cbae6

一旦分配了最后一种颜色,我们应该回到第一种颜色并分配,直到所有"项目"有一种颜色。

伪代码:

为项目中的每个对象循环播放数组颜色,并为项目指定一种颜色。当达到第三种颜色时,从第一种颜色开始。每个项目都有一个属性" setColor"并需要来自" colors"

的价值

提前感谢。

2 个答案:

答案 0 :(得分:2)

使用forEach循环遍历items数组。 forEach提供当前项item的索引,使用该索引与%modulo运算符)来获取等效颜色的索引:

items.forEach(function(item, index) {
    item.setColor( colours[ index % colours.length ] );
});

模运算符的说明:

items.length10colours.length3

index === 0   =>   index % colours.length === 0 % 3 === 0   =>   first colour
index === 1   =>   index % colours.length === 1 % 3 === 1   =>   second colour
index === 2   =>   index % colours.length === 2 % 3 === 2   =>   third colour
index === 3   =>   index % colours.length === 3 % 3 === 0   =>   first colour
index === 4   =>   index % colours.length === 4 % 3 === 1   =>   second colour
index === 5   =>   index % colours.length === 5 % 3 === 2   =>   third colour
index === 6   =>   index % colours.length === 6 % 3 === 0   =>   first colour
index === 7   =>   index % colours.length === 7 % 3 === 1   =>   second colour
index === 8   =>   index % colours.length === 8 % 3 === 2   =>   third colour
index === 9   =>   index % colours.length === 9 % 3 === 0   =>   first colour

m % n < n其中mn都是整数且n != 0

答案 1 :(得分:0)

试试这个:

var ans = new Array();
for(var i = 0;i<items.length;++i){
    ans[items[i]] = colors[i%colors.length];
}