我们如何从js Map对象中删除特定对象?

时间:2018-09-12 06:58:23

标签: javascript arrays reactjs javascript-objects

我在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 :(得分: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');