[英]Delete an array element in Set in Javascript
以下面的例子为例:
var s = new Set([1,2,3]);
s.add([4,5]); //Set(5) {1, 2, 3, 4, [4, 5]}
s.delete([4,5]);//false
我也试过s.delete(Array(4,5))
和s.delete('[4,5]')
,但它们也不起作用。
为什么? 需要考虑delete
函数的实现代码吗?
在[4,5]
你添加一个不同的对象比[4,5]
你告诉它删除。 请记住,对象在 JS 中被引用,因此您对两个恰好看起来相同的不同对象使用了两个单独的引用。
以下是您如何使用相同的对象及其引用:
var s = new Set([1,2,3]);
var newItem = [4, 5];
s.add(newItem); //Set(5) {1, 2, 3, 4, [4, 5]}
s.delete(newItem);
这不是您需要考虑的delete
方法的实现,因为无论您传递什么它都是完全一致的,您需要考虑这样一个事实,即在 JS 中始终引用对象类型而基本类型则不是。
您需要对数组的引用才能删除相同的数组。 如果对象不共享相同的引用,则它们是不同的。
var s = new Set([1, 2, 3]), a = [4, 5]; s.add(a); console.log([...s]); s.delete(a); console.log([...s]);
.as-console-wrapper { max-height: 100% !important; top: 0; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.