如何从数组中删除一个对象?
我想要从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"}];
var objArr=[{Name:"Alex", Age:62},
{Name:"Robert", Age:18},
{Name:"Prince", Age:28},
{Name:"Cesar", Age:38},
{Name:"Sam", Age:42},
{Name:"David", Age:52}
];
for(var i = 0;i < objArr.length; i ++)
{
if(objArr[i].Age > 20)
{
objArr.splice(i, 1);
i--; //re-adjust the counter.
}
}
我想答案非常分支和复杂。
您可以使用以下路径,在现代JavaScript术语中删除与给定对象匹配的数组对象。
coordinates = [
{ lat: 36.779098444109145, lng: 34.57202827508546 },
{ lat: 36.778754712956506, lng: 34.56898128564454 },
{ lat: 36.777414146732426, lng: 34.57179224069215 }
];
coordinate = { lat: 36.779098444109145, lng: 34.57202827508546 };
removeCoordinate(coordinate: Coordinate): Coordinate {
const found = this.coordinates.find((coordinate) => coordinate == coordinate);
if (found) {
this.coordinates.splice(found, 1);
}
return coordinate;
}
someArray = [{name:"Kristian", lines:"2,5,10"},{name:"John",lines:"1,19,26,96"}];
newArray=[];
someArray.map(function(obj, index){
if(obj.name !== "Kristian"){
newArray.push(obj);
}
});
someArray = newArray;
console.log(someArray);
您的数组语法似乎有误,因此假设您指的是数组而不是对象,Array.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);
console.log(myArray); //Expected output 1,2,3,5,6,7,8,9
some
方法:someArray = [{name:"Kristian", lines:"2,5,10"},
{name:"John", lines:"1,19,26,96"}];
someArray.some(item => {
if(item.name === "Kristian") // Case sensitive, will only remove first instance
someArray.splice(someArray.indexOf(item),1)
})
返回数组中属性name
不是"Kristian"的对象
var noKristianArray = $.grep(someArray, function (el) { return el.name!= "Kristian"; });
var someArray = [
{name:"Kristian", lines:"2,5,10"},
{name:"John", lines:"1,19,26,96"},
{name:"Kristian", lines:"2,58,160"},
{name:"Felix", lines:"1,19,26,96"}
];
var noKristianArray = $.grep(someArray, function (el) { return el.name!= "Kristian"; });
console.log(noKristianArray);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
splice(i, 1)将删除数组的增量索引处的对象。 但请记住,splice还会重置数组长度,因此要注意“undefined”。使用您的示例,如果删除“Kristian”,那么在循环的下一次执行中,i将是2,但someArray的长度将为1,因此如果您尝试删除“John”,您将获得一个“undefined”错误。虽然不太优雅,但解决此问题的一种方法是具有单独的计数器以跟踪要删除的元素的索引。
你可以像这样进行筛选:
const someArray = [{
name: "Kristian",
lines: "2,5,10"
},
{
name: "John",
lines: "1,19,26,96"
}
];
var filtered = someArray.filter((el) => el.name != "Kristian");
console.log(filtered)