如何从地图对象中删除带有对象键的对象?

时间:2019-08-05 20:35:13

标签: javascript ecmascript-6

如何从地图对象中删除带有对象键的对象?

例如,如果我创建了一个名为members的地图对象

const members = new Map();

这是在members内添加新对象的正常方法

//members.set(key, value);
members.set('Evelyn',{name: 'Evelyn', age: 25});
//here's how can we delete this object 
members.delete('Evelyn');

但是当我开始在es6中阅读有关地图对象的信息时,我很困惑,键也可以是对象!

  

地图是一个对象,可用于存储键-值对,其中键和值都可以是对象

如果是的话,我该如何删除带有对象键的那个?

//key as an object
members.set({id: 1}, {
 name: 'Evelyn',
 age: 30
});

2 个答案:

答案 0 :(得分:2)

您需要使用相同的对象信息来设置键或搜索的相同对象引用。

var members = new Map,
    id = 1,
    key;

members.set({ id: 1 }, { name: 'Evelyn', age: 30 });
console.log([...members]); // one element

for (key of members.keys()) if (key.id === id) members.delete(key);

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

答案 1 :(得分:1)

let objectKey = {id: 1};
members.set(objectKey, {
 name: 'Evelyn',
 age: 30
});

members.delete(objectKey);

据我所知,地图是通过参考进行比较的,所以这是唯一的方法。