JavaScript:比删除更好的解决方案

时间:2012-01-24 17:36:28

标签: javascript jquery arrays

我有以下数组:

var example = [
    function() { /* hello */ },
    function() { /* goodbye */ }
];

我使用delete example[0];并留下以下结果:

var example = [
    1: function() { /* goodbye */ }
];

是否有比delete更好的解决方案?或者有一种简单的方法来修复数组中的索引? (我可以使用jQuery)

编辑:我修复了示例数组。索引就是这样的例子。

4 个答案:

答案 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)

你可以改变你的第一个元素。

http://jsfiddle.net/4zW7B/1/

var example = [
    function() { alert('hello'); },
    function() { alert('goodbye'); }
];
example[0]();
example.shift();
example[0]();