如何解决我可以在Javascript中将2d数组设置为键吗?
我想使用2d数组作为JavaScript中的键集。有可能吗?
let set = new Set();
let myArr = new Array(2).fill(0).map(() => new Array(2).fill(0));
set.add(myArr);
let myArr2 = new Array(2).fill(0).map(() => new Array(2).fill(0));
set.add(myArr2); // It should not add a new element to the set because it's the same array
解决方法
这与Set
无关:无论何时执行new Array
(或类似操作),您都会创建一个 new 独特的数组,无论它是否具有相同的数组内部的值作为另一个数组。这些阵列占用单独的内存。对于JavaScript,只有当两个数组实际上是相同的 single 一个数组(不是两个相同的数组)时,两个数组才相等。
但是,如果您希望不同的数组在它们具有相同的形状和相同的原始值时被视为相同,则可以将它们的字符串化版本用作键:
let set = new Set();
let myArr = new Array(2).fill(0).map(() => new Array(2).fill(0));
set.add(JSON.stringify(myArr));
let myArr2 = new Array(2).fill(0).map(() => new Array(2).fill(0));
set.add(JSON.stringify(myArr2));
console.log(...set);
请注意,JSON.stringify
并不是 any JavaScript对象的解决方案,但是它将对JSON支持的原始值...的数组(字符串,数字)有效,布尔值,空)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。