gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 04:44:28 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com