[英]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
}
你可以改变你的第一个元素。
var example = [
function() { alert('hello'); },
function() { alert('goodbye'); }
];
example[0]();
example.shift();
example[0]();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.