簡體   English   中英

如何從數組中刪除對象

[英]How can I remove objects from the array

最初我有這個 json,我需要留在“名稱”中:[] 只有那些名稱不重復的對象

{
        "type": "city",
        "names": [
            {
                "name": "Citi1",
                "index": 0,
                "names": [
                    0,
                    1,
                    4
                ]
            },
            {
                "name": "Citi1",
                "index": 1,
                "names": [
                    0,
                    1,
                    4
                ]
            },
            {
                "name": "Citi2",
                "index": 2,
                "names": [
                    2,
                    3
                ]
            },
            {
                "name": "Citi1",
                "index": 4,
                "names": [
                    0,
                    1,
                    4
                ]
            }
        ]

如何從具有重復“名稱”的 ["names"] 數組中刪除對象?

例如,我需要刪除 citi1 重復的對象,只保留其中的 1 個 Expected object

{
        "type": "city",
        "names": [
            {
                "name": "Citi1",
                "index": 0,
                "names": [
                    0,
                    1,
                    4
                ]
            },
            {
                "name": "Citi2",
                "index": 2,
                "names": [
                    2,
                    3
                ]
            },
           
        ]


我試過的代碼

 for(let i = 0; i < queueTypes.length; i++){
queueTypes[i]["names"].forEach(  function (item, index) {
                   
                    let tmpIndex = index;

                    for(let j = 0; j < queueTypes[i]["names"].length; j++){
                         if(queueTypes[i]["names"][j].name == item.name){
                             if( tmpIndex != j ){
                     
                                delete queueTypes[i]["names"][j]

                             }
                        }
                    }
                });
}

試圖遍歷這個數組並檢查名稱是否相同,但索引與我正在檢查的元素不匹配

要根據names數組中的name鍵過濾重復對象,您可以存儲唯一名稱的 map 並過濾掉 map 中已有的任何名稱。

 const myData = { "type": "city", "names": [ { "name": "Citi1", "index": 0, "names": [ 0, 1, 4 ] }, { "name": "Citi1", "index": 1, "names": [ 0, 1, 4 ] }, { "name": "Citi2", "index": 2, "names": [ 2, 3 ] }, { "name": "Citi1", "index": 4, "names": [ 0, 1, 4 ] } ] }; const transform = data => { const unique = {}; return {...data, names: data.names.filter(({ name }) => { if (unique[name]) { return false; } else { unique[name] = true; return true; } }) }; }; console.log(transform(myData));

暫無
暫無

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

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