Javascript数组——用起始索引和默认值创建数组的最快最有效的方法是什么?

javascript array - what is the quickest most efficient way to create an array with a starting index and a default value

本文关键字:数组 有效 是什么 方法 默认值 索引 Javascript 创建      更新时间:2023-09-26

我想在javascript中创建一个数组,有20个元素,起始索引为15,分配每个元素的值为00000。最有效的方法是什么,它可以在不遍历索引的情况下完成吗?

TIA。

javascript中的数组索引总是在区间[0, num_elements)内。如果不希望这样,则需要使用对象。然后你有任意索引,但没有固定的顺序。

如果没有循环,你只能使用即时初始化:

var arr = [null, null, null, ... 15 times ...., '000000', '000000', '000000', '000000', '000000'];

但是可能使用loop更好:)

如果您想使用偏移量,最好使用object:

var iOffset = 15;
var iCount = 20;
var oValues = {};
for (var i = iOffset ; i < iOffset + iCount; i++) {
    oValues[i] = 0;
}

对于数组中的每个项都是字符串的特定情况,您可以不使用new Array(length)构造函数和狡猾的join:

进行循环。
new Array(15).concat(('000000'+new Array(20).join(',000000')).split(','))

不太可能比循环快…当然不太清楚。我还质疑,如果一个数组缺少属性0-14,它是否通常是明智的。

索引不能以15开头。数组的索引总是从索引0开始,如下所示:

var a = [];
a[15] = '000';
alert(a.length); //=> 16

您可以使用递归函数创建一个包含20个元素的数组,例如:

function arr(len){
    return len ? arr(len-1).concat('0000') : [];
}
var myArr = arr(20);

或者创建一个包含自定义索引的小对象数组:

function arr(len){
    return len ? arr(len-1).concat({index:len+14,value:'0000'}) : [];
}
var myArr = arr(20);
alert(myArr[0].index); //=> 15

或者,使用循环,您可以这样做:

var nwArr = function(len,start){
  var l = len+start, a = Array(l);
  while ((l-=1)>=start){ a[l] = '0000'; }
  return a;
}(20,15);
alert(nwArr[15]); //=> '0000'
alert(nwArr[0]);  //=> undefined