在JavaScript中创建任意长度的零填充数组最有效的方法是什么?
当前回答
默认情况下,Uint8Array、Uint16Array和Uint32Array类的值保持为零,因此不需要任何复杂的填充技术,只需执行以下操作:
var ary = new Uint8Array(10);
默认情况下,数组ary的所有元素都将为零。
其他回答
return Array(数量).fill(1).map(n=>return n*Math.abs(~~(Math.random()*(1000-1+1))+1));
一行。
递归解决方案
正如其他人所指出的,利用.contat()通常提供快速解决方案。下面是一个简单的递归解决方案:
函数zeroFill(len,a){return len<=(a||(a=[0])).长度?a.切片(0,len):zeroFill(长度,a.concat(a))}console.log(zeroFill(5));
以及一个通用递归数组填充函数:
函数填充(len,v){返回长度<=(v=[].contat(v,v)).length?v.slice(0,len):填充(len,v)}console.log(fill(5,'abc'));
ES6溶液:
[...new Array(5)].map(x => 0); // [0, 0, 0, 0, 0]
function zeroFilledArray(size) {
return new Array(size + 1).join('0').split('');
}
我知道这不是问题的目的,但这里有一个开箱即用的想法。为什么?我的CSci教授指出,用零来“净化”数据并没有什么神奇之处。因此,最有效的方法是根本不做!只有当数据需要为零作为初始条件(如某些求和)时才这样做——这通常不是大多数应用程序的情况。