我有以下数组:
var example = [
function() { /* hello */ },
function() { /* goodbye */ }
];
我使用 delete example[0];
并得到以下结果:
var example = [
1: function() { /* goodbye */ }
];
有没有比delete
更好的解决方案?还是有一种简单的方法来修复数组中的索引? (我有 jQuery 可供使用)
编辑:我修复了示例数组。示例中有索引。
最佳答案
因为example
是一个数组,而不是delete
,你可以使用.splice
[MDN] :
example.splice(0, 1);
但如果 examples
实际上是一个对象,则您必须使用 delete
并遍历所有属性并“重命名”它们。尽管使用数组可能更容易。
使用 delete
得到此结果的原因是您要从基础对象中删除属性 '0'
和属性 '1'
仍然存在。你基本上是在较低的层次上运作。
索引间隙的另一个问题是 array.length
将始终返回最高索引 + 1,而不是数组中值的实际数量。所以在删除元素后,example.length
仍然是 2
。
关于JavaScript:比删除更好的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8991398/