如何从数组中删除对象? 我希望从someArray中删除包含名称Kristian的对象。例如:

someArray = [{name:"Kristian", lines:"2,5,10"},
             {name:"John", lines:"1,19,26,96"}];

我想实现:

someArray = [{name:"John", lines:"1,19,26,96"}];

当前回答

干净的解决方案是使用Array.filter:

var filtered = someArray.filter(function(el) { return el.Name != "Kristian"; }); 

问题是它不能在IE < 9上工作。然而,你可以包括来自Javascript库(例如:underscore.js)的代码,为任何浏览器实现这一点。

其他回答

最简单的解决方案是创建一个映射,按名称存储每个对象的索引,如下所示:

//adding to array
var newPerson = {name:"Kristian", lines:"2,5,10"}
someMap[ newPerson.name ] = someArray.length;
someArray.push( newPerson );

//deleting from the array
var index = someMap[ 'Kristian' ];
someArray.splice( index, 1 );

你可以这样过滤:

const someArray = [{ 名称:“克里斯蒂安”, 行:“2、5、10” }, { 名称:“约翰”, :“96”1,19日,26日 } ]; var filtered = someArray.filter((el) => el.name != "Kristian"); console.log(过滤)

你所显示的“数组”是无效的JavaScript语法。花括号{}表示具有属性名/值对的对象,而方括号[]表示数组,就像这样:

someArray = [{name:"Kristian", lines:"2,5,10"}, {name:"John", lines:"1,19,26,96"}];

在这种情况下,您可以使用.splice()方法删除一个项。要删除第一项(索引0),如下所示:

someArray.splice(0,1);

// someArray = [{name:"John", lines:"1,19,26,96"}];

如果你不知道索引,但想通过数组搜索找到名称为“Kristian”的项来删除,你可以这样做:

for (var i =0; i < someArray.length; i++)
   if (someArray[i].name === "Kristian") {
      someArray.splice(i,1);
      break;
   }

编辑:我刚刚注意到你的问题被标记为“jQuery”,所以你可以尝试$.grep()方法:

someArray = $.grep(someArray,
                   function(o,i) { return o.name === "Kristian"; },
                   true);

为简单的数组工作投票给UndercoreJS。

_.without()函数帮助删除一个元素:

 _.without([1, 2, 1, 0, 3, 1, 4], 0, 1);
    => [2, 3, 4]

使用javascript的splice()函数。

这可能会有帮助:http://www.w3schools.com/jsref/jsref_splice.asp