Javascript数组——用起始索引和默认值创建数组的最快最有效的方法是什么?
javascript array - what is the quickest most efficient way to create an array with a starting index and a default value
我想在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
相关文章:
- 如何有效地创建多维javascript数组
- Join架构验证:Join.object定义数组中的有效键
- 如何将数组转换为有效的json
- 使用Underscore.js修改json数组中所选元素的更有效方法
- 选择具有值数组的所有元素的最有效方法
- 如何以最有效的方式实现这个多维数组
- 数组在手动写入时有效,但从文本文件加载时无效
- 将javascript数组中的项移动到特定位置的有效方法
- Javascript:字符串中有效的基于数组的替换
- 将JS对象数组转换为嵌套形式的最有效方法
- JavaScript,数组和函数 - 只有数组的最后一个元素有效
- 在JavaScript中搜索数组映射的最有效方法
- 在二维数组中搜索比嵌套循环更有效的方法
- 有效地串行化(并从nodejs读取)int数组
- Javascript-循环通过有效URL的数组's
- 从数组中删除的最有效方法
- 将非类型化数组编译为 C 的有效方法是什么?
- 如何以有效的方式按给定数组对节点列表进行排序
- 以最有效的方式剪切和粘贴数组元素
- 通过数组有效地检索元素