javascript - 如何使用 CoffeeScript 在同一个循环中创建两个数组?

标签 javascript arrays coffeescript push

我想同时创建两个数组 b 和 c。我知道有两种方法可以实现它。第一种方法是

b = ([i, i * 2] for i in [0..10])
c = ([i, i * 3] for i in [0..10])

alert "b=#{b}"
alert "c=#{c}"

这种方法对于只创建一个数组非常方便。我不可能是获得更好计算性能的更好方法。

第二种方法是

b = []
c = []
for i in [0..10]
  b.push [i, i*2]
  c.push [i, i*3]

alert "b=#{b}"
alert "c=#{c}"

这个方法看起来计算效率不错但是有两行 b = [] c = [] 必须先写。我不想写这两行,但我还没有找到答案的好主意。如果不对 b 和 c 的数组进行初始化,我们就无法使用 push 方法。

是否存在存在运算符?在 Coffeescript 中,但我不知道如何在这个问题中使用它。您是否有更好的方法在不显式初始化的情况下创建 b 和 c 的数组?

谢谢!

最佳答案

您可以使用 underscore(或任何其他提供类似 zip 功能的库)的帮助:

[b, c] = _.zip ([[i, i * 2], [i, i * 3]] for i in [0..10])...

执行后我们有:

coffee> b 
[ [ 0, 0 ],
  [ 1, 2 ],
  [ 2, 4 ],
  [ 3, 6 ],
  [ 4, 8 ],
  [ 5, 10 ],
  [ 6, 12 ],
  [ 7, 14 ],
  [ 8, 16 ],
  [ 9, 18 ],
  [ 10, 20 ] ]

coffee> c
[ [ 0, 0 ],
  [ 1, 3 ],
  [ 2, 6 ],
  [ 3, 9 ],
  [ 4, 12 ],
  [ 5, 15 ],
  [ 6, 18 ],
  [ 7, 21 ],
  [ 8, 24 ],
  [ 9, 27 ],
  [ 10, 30 ] ]

参见 section about splats在 CoffeeScript 文档中获取更多详细信息和示例。

关于javascript - 如何使用 CoffeeScript 在同一个循环中创建两个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15289627/

相关文章:

python - 在一维 numpy 数组中使用 Numpy 查找高于某个阈值的最大值

javascript - 当 Controller 更改时动态调用方法

deployment - 基于构建的不同 SASS/Coffeescript 变量值

javascript - 如何获得随 secret 钥

javascript - 在 JavaScript/jQuery 中克隆内存中图像

javascript - Javascript 中的 Math 和 Array 有什么区别?

c - C中的动态与静态/自动内存分配

javascript - 添加到 iOS 主屏幕后,如何在 PWA 上下载动态生成的 PDF 文件?

javascript下拉菜单onclick

angularjs - Protractor 从 Promise 返回一个值