我想同时创建两个数组 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/