Вам нужно будет перебрать карту 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
, а не чьими ключи идентификаторы:
map.set(10, { id: 'foo', y: 20 });
Или, когда задаете значение для карты, также задайте пару ключ-значение в отдельном объекте, который сопоставляет x
s с соответствующим id
, чтобы вы могли получить к нему доступ в будущем с помощью простого поиска свойства вместо .find
:
const idsByX = {};
map.set(id, {x: 10, y: 20});
idsByX['10'] = id;