我有一个从对象数组中删除的函数,但当我检查它的.length
时它是一样的..
这就是我所拥有的:
console.log(data.length);
delete(data[i]);
console.log(data.length);
console.log(data);
我的输出结果如下:
3
3
[object Array]
我已经将下面的对象数组的图像附加了,你只看到2个但是长度仍为3个。
初始数据即时测试是这样的:
[
{"equip":"0","name":"Test","id":"10"},
{"equip":"0","name":"Test","id":"4"},
{"equip":"0","name":"Test","id":"5"}
]
你可以看到我的浏览器已经从对象数组中删除了一个..那么为什么它仍然计数为3,我该如何修复它以便它正确计算?
答案 0 :(得分:5)
删除操作符从对象中删除属性。在您的情况下,属性i
。数组中的属性实际上是索引0
到array.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);