我创建了一个地图对象
var map_obj = new Map();
map_obj.set({'a':2,'b':3},{'c': 4});
现在当我尝试使用.delete运算符时
map_obj.delete({‘a’:2,’b’:3})
它向我显示错误,并且不会删除键和值.可能是正在检查对象引用并创建新对象,因此找不到相等的对象.
在MDN guide中,据说密钥可以是任何类型.那么,这里发生了什么,删除密钥的正确方法是什么?
最佳答案
最简单的方法是将对象引用存储到变量.
原文链接:https://www.f2er.com/js/531104.htmlvar 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; }