myMap.set(id, {x: 10, y: 20})
myMap.delete(id)
如何根据值对象的属性从Map中删除元素?例如,在上述代码中,不是基于键删除,而是基于x
从值中删除
答案 0 :(得分:2)
您必须遍历地图的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
的{{1}} ,而不是其键是ID:
x
或者,在为地图设置值时,还要在一个单独的对象中设置一个键值对,该对象将map.set(10, { id: 'foo', y: 20 });
映射到与其关联的x
,以便将来可以访问它使用简单的属性查找,而不是id
:
.find