将值关联在两个不等长的数组中

时间:2014-09-23 19:34:26

标签: javascript arrays

假设我有三种颜色的数组:

['blue', 'green', 'red']

我有一堆帽子:

['fedora', 'bowler', 'top hat', '10 gallon']

如何为每个帽子指定一种颜色,当我从一开始就用尽了颜色?那样:

fedora =  blue
bowler = green
top hat = red
10 gallon = blue

2 个答案:

答案 0 :(得分:0)

穿过帽子。在循环中,您可以使用remainder operator %(类似于" modulo"运算符在其他语言中)为每个color索引获取正确的hat索引。

var hats = ['fedora', 'bowler', 'top hat', '10 gallon'],
    colors = ['blue', 'green', 'red'];


for (var i = 0; i < hats.length; i++) {
    var hat = hats[i]; // this would be hats[0], then [1], [2], [3], [4], ...
    var color = colors[i % colors.length]; // this would be colors[0], then [1], [2], [0], [1], ...

    console.log(hat + ' = ' + color);
}

Working JSFiddle

i除以colors.length时,运算符会提供余数。对于i = 0, 1, 2, 3, 4, 5, ...i % colors.length将是0, 1, 2, 0, 1, 2, ...(即当您将i除以3时剩余的数量),这是您所需要的。

答案 1 :(得分:0)

假设最长的数组长度= 4,最短= 3

然后使用4作为循环大的索引,并使用index % 3作为最短的索引。