在JavaScript中创建任意长度的零填充数组最有效的方法是什么?
当前回答
return Array(数量).fill(1).map(n=>return n*Math.abs(~~(Math.random()*(1000-1+1))+1));
一行。
其他回答
我没有反对:
Array.apply(null, Array(5)).map(Number.prototype.valueOf,0);
new Array(5+1).join('0').split('').map(parseFloat);
Zertosh建议,但在一个新的ES6阵列扩展中,您可以使用fill方法在本地执行此操作。现在IE edge、Chrome和FF都支持它,但请查看兼容性表
new Array(3).fill(0)将为您提供[0,0,0]。您可以用任何值填充数组,如new array(5).fill('abc')(甚至对象和其他数组)。
除此之外,您还可以使用填充修改以前的阵列:
arr = [1, 2, 3, 4, 5, 6]
arr.fill(9, 3, 5) # what to fill, start, end
这给了你:[1,2,3,9,9,6]
var str = "0000000...0000";
var arr = str.split("");
表达式中的用法:arr[i]*1;
编辑:如果arr应该在整数表达式中使用,那么请不要介意字符值“0”。您只需按如下方式使用它:a=a*arr[i](假设a具有整数值)。
洛达什:
_.fill(array, value)
是一种干净且跨浏览器安全的填充数组的方法。
const arr=数组.from({长度:10}).fill(0);控制台日志(arr)
如果您需要在代码执行期间创建许多不同长度的零填充数组,我发现实现这一点的最快方法是使用本主题中提到的方法之一创建一次零数组,其长度永远不会超过,然后根据需要分割该数组。
例如(使用上面所选答案中的函数初始化数组),创建长度为maxLength的零填充数组,作为需要零数组的代码可见的变量:
var zero = newFilledArray(maxLength, 0);
现在,每当您需要长度为requiredLength<maxLength:
zero.slice(0, requiredLength);
在执行代码期间,我创建了数千次零填充数组,这大大加快了这个过程。