我有一个这样的数组:
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]
答案 0 :(得分:3)
绝对不是。如果从数组中删除某些内容,则会将数组项重新编入索引,从0
到length - 1
正确。实际上它不会删除任何内容,但会创建一个新数组并省略所选项目范围。
但是如果你有一些逻辑并且它是必需的,你可以将它的值设置为undefined
或null
,并在你的代码中检查值。如果是undefined
或null
,请考虑将其从数组中删除。
答案 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" }