0
在咖啡脚本中用特定值初始化数组的最佳方法是什么。到目前为止我所做的 -
[0..100].map -> 0
和
arr = []
arr.push(0) while arr.length isnt 100
如果个人觉得第一个会表现不佳,而第二个太冗长,破坏了咖啡脚本编程的魅力。
更新 2: 如果性能不是问题,那么我想这也是一个选项。
arr = new Array(10).join(0).split('')
更新 2:如果加入通过,上述将比其他选项执行得更好number
更新 3:在看到评论和答案中提到的几个JSPerf 测试后,我尝试使用 node.js 自己执行它们。这是奇怪的结果 - 代码 -
size = 10000000;
key = 1
console.time('splits')
arr1= Array(size + 1).join(key).split('')
console.timeEnd('splits')
console.time('maps')
arr2 = [1..size].map -> key
console.timeEnd('maps')
console.time('loop')
arr3 = []
arr3.push(key) while arr3.length isnt size
console.timeEnd('loop')
console.time('for')
arr4 = (0 for n in [0...size])
console.timeEnd('for')
console.time('for-no-var')
arr5 = (0 for [0...size])
console.timeEnd('for-no-var')
### node- 0.10.15
splits: 162ms
maps: 1639ms
loop: 607ms
for: 659ms
###
有趣的是,拆分和加入所花费的时间要少得多。此外,如果我们真的关心性能,那么我们应该尝试初始化一个非常大的数组,而不是数百个。