Как удалить элемент из карты на основе свойства объекта значения - PullRequest
0 голосов
/ 28 октября 2018
myMap.set(id, {x: 10, y: 20})
myMap.delete(id)

Как я могу удалить элемент с карты на основе свойства объекта значения? например, в приведенном выше коде вместо удаления на основе ключа, удаление на основе x из значения

1 Ответ

0 голосов
/ 28 октября 2018

Вам нужно будет перебрать карту 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...