Javascript数组问题

时间:2010-01-21 11:00:11

标签: javascript arrays

为什么JavaScript返回错误的数组长度?

var myarray = ['0','1'];
delete myarray[0];
alert(myarray.length); //gives you 2

6 个答案:

答案 0 :(得分:13)

“删除”不会修改数组,但 in 数组中的元素:

 # x = [0,1];
 # delete x[0]
 # x
 [undefined, 1]

您需要的是array.splice

答案 1 :(得分:5)

你必须使用array.splice - 请参阅http://www.w3schools.com/jsref/jsref_splice.asp

myarray.splice(0, 1);

这将删除第一个元素

答案 2 :(得分:1)

根据this docs,删除操作符不会更改earray的长度。你可以使用splice()。

答案 3 :(得分:1)

来自Array的MDC文档:

  

“当你删除数组元素时,   数组长度不受影响。对于   例如,如果删除[3],则[4]为   仍然是[4]和[3]未定义。这个   即使你删除了最后一个也保持   数组的元素(删除   一个[则为a.length-1])“。

https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/Special_Operators/delete_Operator

https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Objects/Array

答案 4 :(得分:1)

您可以使用John Resig的漂亮remove()方法执行此操作:

Array.prototype.remove = function(from, to) {
  var rest = this.slice((to || from) + 1 || this.length);
  this.length = from < 0 ? this.length + from : from;
  return this.push.apply(this, rest);
};

// Remove the second item from the array
array.remove(1);
// Remove the second-to-last item from the array
array.remove(-2);
// Remove the second and third items from the array
array.remove(1,2);
// Remove the last and second-to-last items from the array
array.remove(-2,-1);

答案 5 :(得分:0)

这是正常行为。 delete()函数不会删除索引,只会删除索引的内容。所以你在数组中仍然有2个元素,但在索引0你将有undefined