Удалить на карте, не удаляя ключ, который является объектом

jsBin demo
$('a').click(function (e) {
    e.preventDefault();                   // prevent default anchor behavior
    var goTo = this.getAttribute("href"); // store anchor href

    // do something while timeOut ticks ... 

    setTimeout(function(){
         window.location = goTo;
    },3000);       
}); 

3
задан abby37 16 January 2019 в 11:05
поделиться

2 ответа

Проблема в том, что при вызове map_obj.delete({'a':2, 'b':3}) вы вызываете его с новым объектом. Попробуйте:

var map_obj = new Map();
x = {'a':2, 'b':3};
map_obj.set(x, {'c': 4});
//...
map_obj.delete(x);

0
ответ дан Nikita Malyschkin 16 January 2019 в 11:05
поделиться

Самый простой способ - сохранить ссылку на объект в переменной.

var map_obj = new Map(),
    object = { a: 2, b: 3 };

map_obj.set(object, {'c': 4});
console.log([...map_obj]);

map_obj.delete(object);
console.log([...map_obj]);
.as-console-wrapper { max-height: 100% !important; top: 0; }

Если у вас есть только части объекта, вам нужно найти этот объект путем сравнения объекта.

var map_obj = new Map(),
    a = 2, b = 3,
    key;

map_obj.set({ a: 2, b: 3 }, {'c': 4});
console.log([...map_obj]);

key = Array.from(map_obj.keys()).find(o => o.a === a && o.b === b);

map_obj.delete(key);
console.log([...map_obj]);
.as-console-wrapper { max-height: 100% !important; top: 0; }

0
ответ дан Nina Scholz 16 January 2019 в 11:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: