目前我使用此JavaScript 创建一个具有从0到n的n个数字的数组
// javascript populate array
var n=1000;
var arr=[n];
for (i=n;i>=0;i--) {
arr[i]=i;
console.log(arr[i]);
}
这是执行任务的快速/正确方法吗?
答案 0 :(得分:2)
您可以在使用Array.from
时执行声明式方法,如下所示:
arr = Array.from({length: 20}, (e, i)=> i)
console.log(arr)
答案 1 :(得分:2)
使用Array.keys()
的ES6方法:
Host FOO ec2-FOO
User ec2-user
IdentityFile ~/.ssh/creds/some.pem
# Irrelevant?
Hostname example.com
# Neither alternative works (assume full `aws` command)
ProxyCommand bash -c 'ssh -i %i %u@$(aws ec2 describe-instances…)'
ProxyCommand nc $(aws ec2 describe-instances …) %p
# Note that %i (used here to specify IdentityFile) is not a valid token for
# ProxyCommand. http://man7.org/linux/man-pages/man5/ssh_config.5.html#TOKENS
到目前为止,已经做了一个快速的JSPerf答案:
答案 2 :(得分:2)
您可以使用函数map
跳过谓词的第一个参数并获取索引i
。
let arr = Array(10).fill().map((_, i) => i);
console.log(arr);
答案 3 :(得分:1)
如果您所说的高效是指“最少的字符数”,我认为这比发布的任何答案都要短:
[...Array(10).keys()]
在使用浏览器控制台测试内容时,这样的事情会派上用场。请注意,它比当前接受的答案慢两倍多:
Array.from({length:10},(e,i)=>i)
虽然我没有对性能进行专业测试,但我尝试使用这两种方法创建一个包含 1e8 个元素的数组,使用第一种方法大约需要 5 秒钟,使用第二种方法只需要两秒钟(两种方法都有相当大的可变性)我的小笔记本电脑,而一个包含 1e9 个元素的数组导致它内存不足。
但对于需要定期在浏览器控制台中输入此类内容的人来说,这可能不如易于记忆和输入那么重要。但是请注意,如果您要立即将结果输入 .map()
,第一种方法仅短一个字符,相比之下,性能会更差,特别是因为第二种方法不需要单独的 { {1}} 次调用。所以,仅用于调试或试用,但在我看来仍然有用。
答案 4 :(得分:0)
(我认为)最简单的方法[...Array(10)].map((a,b)=>b)
console.log(
[...Array(10)].map((a,b)=>b)
)