从数组中删除对象

时间:2011-05-01 19:14:44

标签: javascript

我有一个array = [],它包含对象...... obj, obj, obj。我必须删除obj two,但我不知道索引...所以如何删除obj。对象的名称也是一样的。

4 个答案:

答案 0 :(得分:4)

我希望它可以帮到你:

function removeByElement(array,obj) {
  for(var i=0; i<array.length;i++ ) { 
    if(array[i]==obj) {
      array.splice(i,1); 
      break;
    }
  } 
}

编辑:  打破循环。

答案 1 :(得分:4)

ES5的方法是使用Array.filter

 myarray = myarray.filter(function(val, index, a) {
    return (val !== obj);
 });

如果您没有ES5,请参阅上面链接的MDN页面以获取要使用的版本。

从技术上讲,这会创建一个新数组,而不是修改原始数组。但是,其他答案中提出的splice无论如何都不是特别有效,因为它必须重新编号每个匹配元素上方的所有索引,并且如果有多个匹配则会反复这样做。

答案 2 :(得分:1)

function removeObject(obj, arr) {
  for (var i = 0; i < arr.length; i++) {
    if (arr[i] === obj) {
      arr.splice(i, 1);
      break;
    }
  }
}

答案 3 :(得分:1)

如果您不知道索引,则必须迭代所有元素并检查每个元素是否是您要查找的元素,然后delete它。

var len = your_array.length;
for(var i=0; i<len;i++){
  if(typeof(your_arry[i])=='classOfTypeYouLookFor'){// OR if(your_array[i].property_of_class && your_array[i].property_of_class==some_specific_value){
      delete(your_arry[i]);
  }
}