[英]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.