簡體   English   中英

如何根據值對象的屬性從地圖中刪除元素

[英]How to delete element from a Map based on property of value object

myMap.set(id, {x: 10, y: 20})
myMap.delete(id)

如何根據值對象的屬性從Map中刪除元素? 例如在上面的代碼中,而不是基於鍵刪除,而是基於x從值中刪除

您必須遍歷地圖的entries並找到具有所需值的entries ,然后從地圖中刪除關聯的鍵:

 const map = new Map(); const id = 'foo'; map.set(id, {x: 10, y: 20}); console.log(map.size); const foundIdEntry = [...map.entries()] .find(([, { x }]) => x === 10); if (foundIdEntry) map.delete(foundIdEntry[0]); console.log(map.size); 

也就是說,如果您必須定期執行此類操作,那么重新考慮數據結構可能會好得多-您可能想要一個Map其鍵為x值,而不是其鍵為ID:

map.set(10, { id: 'foo', y: 20 });

或者,在為地圖設置值時,還要在一個單獨的對象中設置一個鍵-值對,該對象將x s映射到其關聯的id ,以便將來可以使用普通屬性查找而不是.find來訪問它:

const idsByX = {};
map.set(id, {x: 10, y: 20});
idsByX['10'] = id;

暫無
暫無

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

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