【问题标题】:Best way to loop through array of arrays if Coffescript如果 Coffeescript 循环遍历数组数组的最佳方法
【发布时间】:2016-01-14 04:54:18
【问题描述】:

我有一个这样的数组:

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

我想在 Coffeescript 中循环浏览它。其实我想把这些值作为一些函数的属性:

someFunc(a, aa)

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

for in 数组

但是我不知道如何为 2D 数组执行此操作。我徘徊在最好的方法上。

我将不胜感激!

【问题讨论】:

    标签: arrays loops for-loop foreach coffeescript


    【解决方案1】:

    [['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', ...
    

    【讨论】:

      【解决方案2】:

      你可以使用一些destructuring assignment:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-27
        • 2021-12-12
        • 2014-01-07
        • 1970-01-01
        • 2012-05-16
        • 2010-11-03
        • 1970-01-01
        • 2020-02-22
        相关资源
        最近更新 更多