如何从数组中删除对象? 我希望从someArray中删除包含名称Kristian的对象。例如:
someArray = [{name:"Kristian", lines:"2,5,10"},
{name:"John", lines:"1,19,26,96"}];
我想实现:
someArray = [{name:"John", lines:"1,19,26,96"}];
如何从数组中删除对象? 我希望从someArray中删除包含名称Kristian的对象。例如:
someArray = [{name:"Kristian", lines:"2,5,10"},
{name:"John", lines:"1,19,26,96"}];
我想实现:
someArray = [{name:"John", lines:"1,19,26,96"}];
当前回答
我做了一个动态函数,以对象数组,键和值,并返回相同的数组后删除所需的对象:
function removeFunction (myObjects,prop,valu)
{
return myObjects.filter(function (val) {
return val[prop] !== valu;
});
}
完整示例:DEMO
var obj = {
"results": [
{
"id": "460",
"name": "Widget 1",
"loc": "Shed"
}, {
"id": "461",
"name": "Widget 2",
"loc": "Kitchen"
}, {
"id": "462",
"name": "Widget 3",
"loc": "bath"
}
]
};
function removeFunction (myObjects,prop,valu)
{
return myObjects.filter(function (val) {
return val[prop] !== valu;
});
}
console.log(removeFunction(obj.results,"id","460"));
其他回答
你可以使用array.filter()。
如。
someArray = [{name:"Kristian", lines:"2,5,10"},
{name:"John", lines:"1,19,26,96"}];
someArray = someArray.filter(function(returnableObjects){
return returnableObjects.name !== 'Kristian';
});
//someArray will now be = [{name:"John", lines:"1,19,26,96"}];
箭头功能:
someArray = someArray.filter(x => x.name !== 'Kristian')
如果你在数组中的对象上没有任何你知道的属性(或者可能是唯一的),但是你有一个你想要删除的对象的引用,你可以执行下面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)}`);
这个怎么样?
$.each(someArray, function(i){
if(someArray[i].name === 'Kristian') {
someArray.splice(i,1);
return false;
}
});
在你的数组语法中似乎有一个错误,所以假设你的意思是一个数组,而不是一个对象,数组。Splice是你的朋友:
someArray = [{name:"Kristian", lines:"2,5,10"}, {name:"John", lines:"1,19,26,96"}];
someArray.splice(1,1)
这就是我用的。
Array.prototype.delete = function(pos){
this[pos] = undefined;
var len = this.length - 1;
for(var a = pos;a < this.length - 1;a++){
this[a] = this[a+1];
}
this.pop();
}
那就像说出来一样简单
var myArray = [1,2,3,4,5,6,7,8,9];
myArray.delete(3);
用任何数字代替3。之后的预期输出应该是:
console.log(myArray); //Expected output 1,2,3,5,6,7,8,9