Javascript从数组中删除项目但保留参考编号

时间:2017-09-21 16:57:08

标签: javascript arrays

我有一个这样的数组:

var myArr= ["zero", "one", "two", "three", "four"];

如果我想访问此数组中的任何值,我会做类似的事情......

var numberTwo = myArr[2] 

我的问题是我想从我的数组中删除一个项目,但是没有丢失现有的数字引用......就像这样......

myArr.splice(2,1)

所以我的阵列现在将......

["zero", "one", "three", "four"]

是否可以删除第2项,但仍然可以使用以下代码访问“3”:var numberThree = myArr[3]而不是var numberThree = myArr[2]

3 个答案:

答案 0 :(得分:3)

绝对不是。如果从数组中删除某些内容,则会将数组项重新编入索引,从0length - 1正确。实际上它不会删除任何内容,但会创建一个新数组并省略所选项目范围。

但是如果你有一些逻辑并且它是必需的,你可以将它的值设置为undefinednull,并在你的代码中检查值。如果是undefinednull,请考虑将其从数组中删除。

答案 1 :(得分:2)

您可以使用delete operator删除数组中的项目。

要进行检查,您可以使用in operator,因为数组中已删除项目的值为undefined,这与undefined的预期值没有区别。要检查稀疏项目,您可以使用in运算符。

var array = ["zero", "one", "two", "three", "four"];

delete array[3];

console.log(array[3]);   // undefined
console.log(array[4]);   // 'four'
console.log(3 in array); // false
console.log(1 in array); // true

答案 2 :(得分:0)

您可以改为使用哈希表:

var myArr = {0: "zero", 1: "one", 2: "two", 3: "three", 4: "four"};

然后你可以删除你想要的任何元素:

delete myArr[2];

然后以相同的方式访问元素:

myArr[3] //=> three
myArr //=> {0: "zero", 1: "one", 3: "three", 4: "four"}

您可以使用更易读的键:

var myArr = { "elem0": "zero", "elem1": "one" }