如何从数组中删除元素。 Splice()不起作用

时间:2013-04-27 11:41:59

标签: javascript jquery

我声明了一个这样的数组:

var myArray= [];

然后我添加数字元素

myArray.push(myNumber);

所以当我调用myArray.toString();

时,数组看起来像这样
  

1,4,3,9

我正在尝试删除像这样的某些元素

for(var i = myArray.length; i >= 0; i--) {
   if(myArray[i] === theNumberIwantToRemove) {  //theNumberIwantToRemove ==4
      myArray.splice(i, 1);
   }
}

但它不起作用。输出仍然相同

  

1,4,3,9

任何人都知道为什么或如何正确地做到这一点?

3 个答案:

答案 0 :(得分:3)

你的例子绝对没有错。

这很好用,并给出输出:[1,3,9]。在这里测试一下:Demo

var myArray= [];

myArray.push(1,4,3,9);

console.log(myArray);

for(var i = myArray.length; i >= 0; i--) {
   if(myArray[i] === 4) {  //theNumberIwantToRemove ==4
      myArray.splice(i, 1);
   }
}

console.log(myArray);

您将在控制台中看到此内容:

  • [1,4,3,9]
  • [1,3,9]

答案 1 :(得分:1)

如果您有一个唯一的数组,并且想要删除唯一的值,那么就不需要jquery或循环,只需使用旧的javascript Array.indexOfArray.splice

var array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
    theNumberIwantToRemove = 5,
    position = array.indexOf(theNumberIwantToRemove);

if (position !== -1) {
    array.splice(position, 1);
}

alert(array);

jsfiddle

如果您的数组不是唯一的并且您想删除每次出现的值,那么仍然不需要jquery,您可以使用Array.filter

var array = [0, 1, 5, 2, 3, 4, 5, 6, 7, 5, 8, 9],
    theNumberIwantToRemove = 5,
    position = array.indexOf(theNumberIwantToRemove),
    result = array.filter(function (element) {
        return element !== theNumberIwantToRemove;
    });

alert(result);

jsfiddle

如果你不顾每个问题使用jquery就绝对不能活下去:
使用jQuery.inArray

var array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
    theNumberIwantToRemove = 5
    position = $.inArray(theNumberIwantToRemove, array);

if (position !== -1) {
    array.splice(position, 1);
}

alert(array);

使用jQuery.filter

var array = [0, 1, 5, 2, 3, 4, 5, 6, 7, 5, 8, 9],
    theNumberIwantToRemove = 5,
    position = array.indexOf(theNumberIwantToRemove),
    result = $(array).filter(function (index, element) {
        return element !== theNumberIwantToRemove;
    }).toArray();

alert(result);

jsfiddle

还有jQuery.grep

var array = [0, 1, 5, 2, 3, 4, 5, 6, 7, 5, 8, 9],
    theNumberIwantToRemove = 5,
    position = array.indexOf(theNumberIwantToRemove),
    result = $.grep(array, function (element) {
        return element !== theNumberIwantToRemove;
    });

alert(result);

jsfiddle

否则您的代码似乎没有任何问题。

答案 2 :(得分:0)

这个怎么样?

var array = [1, 2, 3, 4, 5]
var removeItem = 3;

obj = jQuery.grep(obj, function(value) {
    return value != removeItem;
});

结果:

[1, 2, 4, 5]

http://snipplr.com/view/14381/remove-item-from-array-with-jquery/