在JavaScript中创建任意长度的零填充数组最有效的方法是什么?
当前回答
const item = 0
const arr = Array.from({length: 10}, () => item)
常量项=0constarr=Array.from({length:42},()=>项)控制台日志('arr',arr)
其他回答
使用对象表示法
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 = [];
将对原型进行修改
无论如何,我不会过分关注这个操作的效率或速度,你可能会做很多其他事情,这些事情比安装一个包含零的任意长度数组更浪费和昂贵。
const item = 0
const arr = Array.from({length: 10}, () => item)
常量项=0constarr=Array.from({length:42},()=>项)控制台日志('arr',arr)
var str = "0000000...0000";
var arr = str.split("");
表达式中的用法:arr[i]*1;
编辑:如果arr应该在整数表达式中使用,那么请不要介意字符值“0”。您只需按如下方式使用它:a=a*arr[i](假设a具有整数值)。
递归解决方案
正如其他人所指出的,利用.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'));
其他人似乎缺少的是预先设置数组的长度,这样解释器就不会不断改变数组的大小。
我的简单一行代码是Array.protocol.slice.apply(newUint8Array(长度))
但是,如果我要创建一个函数来快速执行,而不需要一些复杂的变通方法,我可能会编写一个这样的函数:
var filledArray = function(value, l) {
var i = 0, a = []; a.length = l;
while(i<l) a[i++] = value;
return a;
}