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