我在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'}
。
答案 0 :(得分:4)
您已将其存储在密钥'1'
下。因此,您使用该键致电delete
:
newMap.delete('1');
如果您不知道存储在其下的密钥,则Map
可能不是您想要的结构,但是您可以通过遍历entries
来找到它,并返回一个数组,其条目为[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;
}
});
答案 1 :(得分:2)
您将必须遍历条目和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)
)
答案 2 :(得分:0)
您的地图如下:
地图{'1'=> {ep:'1',名称:'First test'},'2'=> {ep:'2', 名称:“第二项测试”}}
要删除ep:'1'并且只有ep:'2',可以尝试以下操作:
newMap.delete('1');