繁体   English   中英

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

[英]JavaScript: Better solution than delete

我有以下数组:

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

你定义数组的方法是错误的。 这就是它的完成方式:

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

你可以使用shift来删除第一个元素:

var firstElement = example.shift();

您可以使用自定义排序功能:

array.sort(sortfunction)

function sortfunction(a, b){
  // check indexes here
}

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM