目前我使用这个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]);
}
这是完成任务的快速/正确方式吗?
目前我使用这个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]);
}
这是完成任务的快速/正确方式吗?
你可以使用 Array.from
来实现声明式编程,例如:
arr = Array.from({length: 20}, (e, i)=> i)
console.log(arr)
Array.from
方法,该方法会查看length属性并尝试为其在长度(0...19)中的每个索引处对对象进行索引。它得到每个索引处的Undefined值,并将(Value,Index)传递给箭头函数。然后箭头函数返回索引,由Array.from
收集。 - Reid BallardArray.keys()
:
let n = 10;
let arr = Array.from(Array(n).keys());
console.log(arr);
map
,跳过谓词的第一个参数,并获取索引i
。
let arr = Array(10).fill().map((_, i) => i);
console.log(arr);
[...Array(10).keys()]
当使用浏览器控制台测试东西时,这些东西非常有用。但请注意,它的速度比当前被接受的答案慢了两倍以上:
Array.from({length:10},(e,i)=>i)
但对于那些需要经常将这样的内容输入到浏览器控制台的用户来说,记忆和输入的便捷性可能比性能更重要。请注意,如果您将结果立即输入到.map()
中,则第一种方法只比第二种方法少一个字符,并且性能比较差,特别是因为第二种方法不需要单独的.map()
调用。因此,仅适用于调试或尝试功能,但我认为仍然很有用。
我认为最短的方法是 [...Array(10)].map((a,b)=>b)
console.log(
[...Array(10)].map((a,b)=>b)
)