Как удалить конкретный объект из объекта js Map? - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть несколько объектов внутри объекта js Map.Как мы удаляем объект с определенным ключом и значением?

let newMap = new Map()

newMap.set('1', {ep: '1', name: 'First test'})
newMap.set('2', {ep: '2', name: 'Second test'})

Итак, приведенный выше пример содержит два объекта внутри newMap.Как я могу удалить объект со значением ep '1', чтобы хеш newMap возвращал только один объект, т.е. {ep: '2', name: 'Second test'}.

Ответы [ 3 ]

0 голосов
/ 12 сентября 2018

Вам придется перебирать записи и find объект, который вы хотите удалить, затем delete соответствующий ключ:

let newMap = new Map();
newMap.set('1', {ep: '1', name: 'First test'});
newMap.set('2', {ep: '2', name: 'Second test'});

const entryToRemove = [...newMap.entries()].find(([, { ep }]) => ep === '1');
newMap.delete(entryToRemove[0]);
console.log(newMap); // look in browser console, not snippet console

(Конечно, если вы можете рассчитывать, что ключ карты совпадает с ep, просто наберите newMap.delete(epToDelete))

0 голосов
/ 12 сентября 2018

Ваша карта выглядит следующим образом:

Карта {'1' => {ep: '1', название: 'First test'}, '2' => {ep: '2', name:' Second test '}}

Чтобы удалить ep:' 1 'и иметь onlye ep:' 2 ', вы можете попробовать это:

newMap.delete('1');
0 голосов
/ 12 сентября 2018

Вы сохранили его под ключом '1'.Таким образом, вы вызываете delete с этим ключом:

newMap.delete('1');

Если вы не знаете ключ, под которым вы его сохранили, то Map, вероятно, не является структуройвы хотели, но вы можете найти его, просматривая entries, который возвращает массив, записи которого имеют формат arraysin [key, value]:

for (const entry of newMap.entries()) { // for-of is ES2015+
    if (entry[1].ep === '1') {
        newMap.delete(entry[0]);
        break;
    }
}

... или с ES5:

newMap.entries().some(function(entry) {
    if (entry[1].ep === '1') {
        newMap.delete(entry[0]);
        return true;
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...