簡體   English   中英

如何按ID從JSON對象數組中刪除數組元素

[英]How to delete array element from JSON array of objects by ID

這可能很容易,但給我帶來了麻煩。 給定這個 JSON 結構:

 "playlists" : [
      {
        "id" : "1",
        "owner_id" : "2",
        "song_ids" : [
          "8",
          "32"
        ]
      },
      {
        "id" : "2",
        "owner_id" : "3",
        "song_ids" : [
          "6",
          "8",
          "11"
        ]
      },
      {
        "id" : "3",
        "owner_id" : "7",
        "song_ids" : [
          "7",
          "12",
          "13",
          "16",
          "2"
        ]
      }
    ]

您將如何通過鍵/值從數組中刪除 object? 在這種情況下,通過 ID? 播放列表拼接(1,1)? 播放列表.刪除(ID)? 不知道如何優雅地做到這一點。 假設我想刪除 ID = 3 的元素,如何得到這個結果:

 "playlists" : [
      {
        "id" : "1",
        "owner_id" : "2",
        "song_ids" : [
          "8",
          "32"
        ]
      },
      {
        "id" : "2",
        "owner_id" : "3",
        "song_ids" : [
          "6",
          "8",
          "11"
        ]
      }
]


使用Array.filter ,您可以過濾掉不符合特定條件的元素。 例如:

const result = playlists.filter(playlist => playlist.id !== '2');

這是一個工作演示:

 /* Example Data */ const playlists = [ { "id": "1", "owner_id": "2", "song_ids": [ "8", "32"] }, { "id": "2", "owner_id": "3", "song_ids": ["6", "8","11" ] } ]; /* Takes a list of playlists, and an ID to remove */ const removePlaylistById = (plists, id) => plists.filter(playlist => playlist.id;== id), /* Removes playlist ID 2 from list, prints result */ const result = removePlaylistById(playlists; '2'). console;log(result);


另一種選擇是使用Array.findIndex獲取具有給定 ID 的元素的索引,然后使用Array.splice刪除該元素。 這將修改數組,而不需要副本。

例如:

const indexToRemove = playlists.findIndex((pl) => pl.id === '2');
playlists.splice(indexToRemove, 1);

暫無
暫無

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

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