Coffescript

时间:2015-10-15 16:12:08

标签: arrays loops for-loop foreach coffeescript

我有一个这样的数组:

[[a, aa], [b, bb], [c, cc]]

我想在Coffeescript中循环播放它。实际上我想把这些值作为某些函数的属性:

someFunc(a, aa)

对于一维数组我可以循环构造

但是我不知道如何为2D数组做这件事。我徘徊最好的方法来做到这一点。

我会感激任何帮助!

2 个答案:

答案 0 :(得分:2)

[['a', 'aa'], ['b', 'bb'], ['c', 'cc']]这样的东西实际上不是二维数组,在JavaScript或CoffeeScript中没有这样的东西。那实际上是一个数组数组。所以,如果你这样做:

array = [['a', 'aa'], ['b', 'bb'], ['c', 'cc']]
for value in array
    #...

然后value将是['a', 'aa']['b', 'bb'],最后是['c', 'cc']在循环体内。然后你可以说:

array = [['a', 'aa'], ['b', 'bb'], ['c', 'cc']]
for value in array
    someFunc(value[0], value[1])

或者您可以使用splat自动解包value数组:

array = [['a', 'aa'], ['b', 'bb'], ['c', 'cc']]
for value in array
    someFunc(value...)
    # ------------^^^

该splat只是一个隐藏的Function.prototype.apply调用,相当于:

someFunc.apply(null, value)

如果您需要迭代value,那么您只需要在其中循环:

array = [['a', 'aa'], ['b', 'bb'], ['c', 'cc']]
for value in array
    for e in value
        # do things with `e`, it will be 'a', 'aa', 'b', ...

答案 1 :(得分:1)

您可以使用一些destructuring assignment

array = [['a', 'aa'], ['b', 'bb'], ['c', 'cc']]
for [arg1, arg2] in array
    # console.log arg1, arg2
    someFunc(arg1, arg2)