我有以下数组:
var example = [
function() { /* hello */ },
function() { /* goodbye */ }
];
我使用delete example[0];
并留下以下结果:
var example = [
1: function() { /* goodbye */ }
];
是否有比delete
更好的解决方案?或者有一种简单的方法来修复数组中的索引? (我可以使用jQuery)
编辑:我修复了示例数组。索引就是这样的例子。
答案 0 :(得分:7)
由于example
是一个数组,而不是delete
,您可以使用.splice
[MDN]:
example.splice(0, 1);
但如果examples
实际上是一个对象,则必须使用delete
并迭代所有属性并“重命名”它们。虽然使用数组可能更容易。
您使用delete
获得此结果的原因是您要从基础对象中删除属性'0'
,并且属性'1'
仍然存在。你基本上是在较低的水平上运作。
索引中存在间隙的另一个问题是array.length
将始终返回最高索引+ 1而不是数组中实际的值数。因此,删除元素后,example.length
仍为2
。
答案 1 :(得分:1)
您定义数组的方式是错误的。 这就是它的完成方式:
var example = [
function() { /* hello */ },
function() { /* goodbye */ }
];
您可以使用shift删除第一个元素:
var firstElement = example.shift();
答案 2 :(得分:0)
您可以使用自定义排序功能:
array.sort(sortfunction)
function sortfunction(a, b){
// check indexes here
}
答案 3 :(得分:0)
你可以改变你的第一个元素。
var example = [
function() { alert('hello'); },
function() { alert('goodbye'); }
];
example[0]();
example.shift();
example[0]();