簡體   English   中英

如何從作為嵌套對象的數組中刪除元素

[英]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
);

MDN Array.prototype.map()文檔

請注意,它的IE兼容性從版本9開始。

您可以嘗試以下方法

arr= _.reject(arr, function(obj) {
   return obj.User.id == 768;
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM