使用删除后长度不变

时间:2013-12-27 04:29:48

标签: javascript

我有一个从对象数组中删除的函数,但当我检查它的.length时它是一样的..

这就是我所拥有的:

console.log(data.length);

delete(data[i]);

console.log(data.length);
console.log(data);

我的输出结果如下:

3
3
[object Array]

我已经将下面的对象数组的图像附加了,你只看到2个但是长度仍为3个。

enter image description here

初始数据即时测试是这样的:

[
  {"equip":"0","name":"Test","id":"10"},
  {"equip":"0","name":"Test","id":"4"},
  {"equip":"0","name":"Test","id":"5"}
]

你可以看到我的浏览器已经从对象数组中删除了一个..那么为什么它仍然计数为3,我该如何修复它以便它正确计算?

3 个答案:

答案 0 :(得分:5)

删除操作符从对象中删除属性。在您的情况下,属性i。数组中的属性实际上是索引0array.length - 1。改为使用拼接:

data.splice(i, 1);

要查找对象中的属性数,请使用Object.keys

Object.keys(data).length将导致2

答案 1 :(得分:1)

  

删除数组元素时,数组长度不受影响。   即使您删除了数组的最后一个元素,这也成立。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete

答案 2 :(得分:0)

delete用于从对象中删除元素以供数组使用splice

array.splice(index, 1);