[英]How to remove element from an array which as nested objects
這是我的陣列,
arr = [
{
'User': {
'id':1058,
'name':'user67'
},
Source: {
'dom':'pl-4'
}
},
{
'User': {
'id':768,
'name':'user13'
},
Source: {
'dom':'pl-4'
}
}
];
我正在使用以下代碼刪除:
arr= _.without(arr, _.findWhere(arr, {id: 768}));
我想刪除ID為768的用戶,但它不知何故不起作用。
如何搜索嵌套對象?
使用ES5數組方法,
arr = arr.filter(function(item) {
return item.User.id !== 768;
});
請注意它簡短明了,但傳統的for循環更快。
您仍然可以在純JavaScript中執行此操作:
for (var i = 0; i < arr.length; i++)
{
if (arr[i].User.id == 768)
{
arr.splice(i, 1);
break;
}
}
小提琴 。
Javascript有一個很好的Array方法叫做map
,可以映射對象數組的屬性。 因此,您可以通過此方法將數組的對象拼接在包含特定屬性的選定索引上:
arr.splice(
arr.map(function(e) {
return e["User"]["id"];
}).indexOf(768)
,1
);
請注意,它的IE兼容性從版本9開始。
您可以嘗試以下方法
arr= _.reject(arr, function(obj) {
return obj.User.id == 768;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.