[英]How can I remove objects with empty strings from array in Javascript?
[英]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.