Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript数组-创建具有起始索引和默认值的数组的最快、最有效的方法是什么_Javascript_Arrays - Fatal编程技术网

javascript数组-创建具有起始索引和默认值的数组的最快、最有效的方法是什么

javascript数组-创建具有起始索引和默认值的数组的最快、最有效的方法是什么,javascript,arrays,Javascript,Arrays,我想在javascript中创建一个数组,包含20个起始索引为15的元素,为每个元素分配一个00000的值。什么是最有效的方法,并且可以在不循环索引的情况下完成 TIA。javascript中的数组索引始终在间隔[0,num_elements)内。如果不希望这样做,则需要使用对象。然后您有仲裁索引,但没有固定顺序。没有循环,您只能使用即时初始化: var arr = [null, null, null, ... 15 times ...., '000000', '000000', '000000

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


TIA。

javascript中的数组索引始终在间隔
[0,num_elements)
内。如果不希望这样做,则需要使用对象。然后您有仲裁索引,但没有固定顺序。

没有循环,您只能使用即时初始化:

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

但可能最好使用循环:)

如果要使用偏移量,最好使用
对象

var iOffset = 15;
var iCount = 20;
var oValues = {};
for (var i = iOffset ; i < iOffset + iCount; i++) {
    oValues[i] = 0;
}
var iOffset=15;
var-iCount=20;
变量oValues={};
对于(变量i=iOffset;i
数组不能以索引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);
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
或创建包含自定义索引的小对象数组:

function arr(len){
    return len ? arr(len-1).concat({index:len+14,value:'0000'}) : [];
}
var myArr = arr(20);
alert(myArr[0].index); //=> 15
或者,使用循环,您可以执行以下操作:

function arr(len){
    return len ? arr(len-1).concat('0000') : [];
}
var myArr = arr(20);
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

对于数组中的每个项都是字符串的特定情况,您可以使用
新数组(长度)
构造函数和偷偷的
连接来完成此操作:

new Array(15).concat(('000000'+new Array(20).join(',000000')).split(','))

不太可能比循环快…当然不太清楚。我还想问一个缺少属性0–14的数组是否通常是明智的选择。

你可以玩弄不同的方法来做不同的事情(如何创建数组,如何创建将进入数组的元素,如何实际插入这些元素,等等)然后将各种技术应用于微优化是所有问题的根源。我设法编写并完成了一个web工具的代码,以执行我开始执行的任务。但随着我学到的更多,我希望它能更好更快地为用户服务,所以现在我正在废弃大部分代码并重写以适应新的算法。我不认为我会失败请注意,拥有一个值为
null
,或者实际上是
未定义的
,与在给定索引下没有属性并不完全相同。是的,我知道。我选择
null
,因为它写起来比较短,例如:)更短的是:
[
谢谢,我想我只是问是否有某种方法可以声明类似于arrayx{150000,20}的内容,但我想没有。谢谢,这似乎是arrayx{150000,20}的替代方法。我想我只是问是否有某种方法可以声明类似于arrayx{150000,20}的内容,但我想不是。谢谢,这似乎是数组的替代方法。我想我只是问是否有某种方法可以声明类似arrayx{150000,20}的东西,但我想没有。谢谢,我会记住这些答案,我认为其中一个很方便。谢谢,我想我只是问是否有某种方法可以声明类似arrayx的东西{150000,20},但我想不是。