我有一个这样的数组:
[[a, aa], [b, bb], [c, cc]]
我想在Coffeescript中循环播放它。实际上我想把这些值作为某些函数的属性:
someFunc(a, aa)
对于一维数组我可以循环构造
值
但是我不知道如何为2D数组做这件事。我徘徊最好的方法来做到这一点。
我会感激任何帮助!
答案 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)