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

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

我想实现:

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

当前回答

只从数组中返回属性名不是“Kristian”的对象

var noKristianArray = $.grep(someArray, function (el) { return el.name!= "Kristian"; });

演示:

var someArray = [ {名称:“克里斯蒂安”,行:“2、5、10”}, {名称:“约翰”,行:“1,19日,26日96”}, {名称:“克里斯蒂安”,行:" 58160 "}, {名称:“费利克斯”,行:“96”1,19日,26日} ]; var noKristianArray = $。grep(someArray, function (el){返回el.name!= "克里斯蒂安”;}); console.log (noKristianArray); < script src = " https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js " > < /脚本>

其他回答

你也可以尝试这样做:

var myArray = [{'name': 'test'}, {'name':'test2'}];
var myObject = {'name': 'test'};
myArray.splice(myArray.indexOf(myObject),1);

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

//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 = [{name:"Kristian", lines:"2,5,10"}, {name:"John", lines:"1,19,26,96"}];

我们得到对象的索引它的name属性值为"Kristian"

const index = someArray.findIndex(key => key.name === "Kristian");
console.log(index); // 0

通过使用拼接函数我们删除了name属性值为“Kristian”的对象

someArray.splice(index,1);
console.log(someArray); // [{name:"John", lines:"1,19,26,96"}]

在你的数组语法中似乎有一个错误,所以假设你的意思是一个数组,而不是一个对象,数组。Splice是你的朋友:

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

如果你在数组中的对象上没有任何你知道的属性(或者可能是唯一的),但是你有一个你想要删除的对象的引用,你可以执行下面unregisterObject方法中的操作:

let registeredObjects = []; function registerObject(someObject) { registeredObjects.push(someObject); } function unregisterObject(someObject) { registeredObjects = registeredObjects.filter(obj => obj !== someObject); } let myObject1 = {hidden: "someValue1"}; // Let's pretend we don't know the hidden attribute let myObject2 = {hidden: "someValue2"}; registerObject(myObject1); registerObject(myObject2); console.log(`There are ${registeredObjects.length} objects registered. They are: ${JSON.stringify(registeredObjects)}`); unregisterObject(myObject1); console.log(`There are ${registeredObjects.length} objects registered. They are: ${JSON.stringify(registeredObjects)}`);