-2

我声明一个这样的数组:

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

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

4

3 回答 3

3

你的例子绝对没有错。

这工作正常,并给出输出:[1,3,9]。在这里自己测试:演示

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]
于 2013-04-27T11:45:55.760 回答
1

如果您有一个唯一的数组并且想要删除唯一出现的值,则不需要 jquery 或循环,只需使用好的旧 javascript 的Array.indexOfA​​rray.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 上

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

于 2013-04-27T12:16:58.220 回答
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/

于 2013-04-27T11:45:36.117 回答