在JavaScript中创建任意长度的零填充数组最有效的方法是什么?
当前回答
创建全新阵列
new Array(arrayLength).fill(0);
在现有阵列的末尾添加一些值
[…existingArray,…new Array(numberOfElementsToAdd).fill(0)]
实例
//**创建全新阵列**console.log(新数组(5).fill(0));//**在现有阵列的末尾添加一些值**让existingArray=[1,2,3]console.log([…existingArray,…new Array(5).fill(0)]);
其他回答
创建全新阵列
new Array(arrayLength).fill(0);
在现有阵列的末尾添加一些值
[…existingArray,…new Array(numberOfElementsToAdd).fill(0)]
实例
//**创建全新阵列**console.log(新数组(5).fill(0));//**在现有阵列的末尾添加一些值**让existingArray=[1,2,3]console.log([…existingArray,…new Array(5).fill(0)]);
虽然这是一个旧线程,但我想添加我的2美分。不知道这有多慢/快,但它是一个快速的单线。以下是我所做的:
如果我想预先填写数字:
Array.apply(null, Array(5)).map(Number.prototype.valueOf,0);
// [0, 0, 0, 0, 0]
如果我想预先填充字符串:
Array.apply(null, Array(3)).map(String.prototype.valueOf,"hi")
// ["hi", "hi", "hi"]
其他答案表明:
new Array(5+1).join('0').split('')
// ["0", "0", "0", "0", "0"]
但如果您想要0(数字)而不是“0”(字符串中为零),则可以执行以下操作:
new Array(5+1).join('0').split('').map(parseFloat)
// [0, 0, 0, 0, 0]
洛达什:
_.fill(array, value)
是一种干净且跨浏览器安全的填充数组的方法。
使用对象表示法
var x = [];
零填充?喜欢
var x = [0,0,0,0,0,0];
填充了“undefined”。。。
var x = new Array(7);
带零的obj符号
var x = [];
for (var i = 0; i < 10; i++) x[i] = 0;
作为补充说明,如果修改Array的原型
var x = new Array();
and
var y = [];
将对原型进行修改
无论如何,我不会过分关注这个操作的效率或速度,你可能会做很多其他事情,这些事情比安装一个包含零的任意长度数组更浪费和昂贵。
function makeArrayOf(value, length) {
var arr = [], i = length;
while (i--) {
arr[i] = value;
}
return arr;
}
makeArrayOf(0, 5); // [0, 0, 0, 0, 0]
makeArrayOf('x', 3); // ['x', 'x', 'x']
注意while通常比in、forEach等更有效。