Javascript 使用一个值从数组中删除对象

Javascript 使用一个值从数组中删除对象,javascript,jquery,arrays,oop,Javascript,Jquery,Arrays,Oop,可能是初学者提出的一个非常明显的问题: 如果我有以下数组 var arr = [ {id: 1, item: "something", description: "something something"}, {id: 2, item: "something else", description: "something different"}, {id: 3, item: "something more", description: "more than somet

可能是初学者提出的一个非常明显的问题:

如果我有以下数组

var arr = 
  [
    {id: 1, item: "something", description: "something something"},
    {id: 2, item: "something else", description: "something different"},
    {id: 3, item: "something more", description: "more than something"}
  ]
。。。并希望通过调用id(在本例中,通过单击给定相应id的div)来删除其中的特定对象

。。。我可以不使用for循环来匹配
arr[I]
thisItem
来执行此操作吗?如果是,怎么做?我将有一个大的数组,所以运行for循环看起来非常费力


谢谢

您可以使用JQuery的
grep

arr = jQuery.grep(arr, function(value) {
  return value.id != id;
});
可以用于筛选任何数组。此方法将筛选函数作为其参数,并在原始数组的每个元素上运行它。如果此函数的返回值为
false
,则从返回的新数组中筛选出该元素。原始阵列不受影响

var arr = 
  [
    {id: 1, item: "something", description: "something something"},
    {id: 2, item: "something else", description: "something different"},
    {id: 3, item: "something more", description: "more than something"}
  ];

function filterArray( id ){
  return arr.filter(function(item){
    return item.id != id;
  });//filter
}//filterArray()

console.log( filterArray(2) );
普通JS解决方案:

var arr = [{
  id: 1,
  item: "something",
  description: "something something"
}, {
  id: 2,
  item: "something else",
  description: "something different"
}, {
  id: 3,
  item: "something more",
  description: "more than something"
}];

var filtered = filterArrayByElemId(arr, 2);
console.log(filtered);

function filterArrayByElemId(arr, id) {
  return arr.filter(function(item) {
    return item.id != id;
  });
}

对于最新的浏览器,
array.filter
是一种非常有效的方法。非常感谢。这也非常有效。谢谢
var arr = [{
  id: 1,
  item: "something",
  description: "something something"
}, {
  id: 2,
  item: "something else",
  description: "something different"
}, {
  id: 3,
  item: "something more",
  description: "more than something"
}];

var filtered = filterArrayByElemId(arr, 2);
console.log(filtered);

function filterArrayByElemId(arr, id) {
  return arr.filter(function(item) {
    return item.id != id;
  });
}