发布于 2019-01-16 19:08:50
最简单的方法是将对象引用存储到一个变量中。
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; }
发布于 2019-01-16 19:02:56
这里的问题是,当调用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);
https://stackoverflow.com/questions/54215562
复制相似问题