Javascript 如何构建一组独特的阵列?
我想向Javascript集中添加许多数组,并确保只向该集中添加唯一的数组。但是,当我多次尝试添加同一数组时,它总是被添加而不是被拒绝。.has()方法也总是返回false。我该如何解决这个问题Javascript 如何构建一组独特的阵列?,javascript,arrays,set,unique,Javascript,Arrays,Set,Unique,我想向Javascript集中添加许多数组,并确保只向该集中添加唯一的数组。但是,当我多次尝试添加同一数组时,它总是被添加而不是被拒绝。.has()方法也总是返回false。我该如何解决这个问题 const mySet = new Set(); mySet.add([1, 2, 3]); mySet.add([4, 5]); mySet.add([1, 2, 3]); console.log(mySet); // Gives: Set(3) { [ 1, 2
const mySet = new Set();
mySet.add([1, 2, 3]);
mySet.add([4, 5]);
mySet.add([1, 2, 3]);
console.log(mySet);
// Gives: Set(3) { [ 1, 2, 3 ], [ 4, 5 ], [ 1, 2, 3 ] }
// I want: Set(2) { [ 1, 2, 3 ], [ 4, 5 ] }
console.log(mySet.has([1, 2, 3]));
// Gives: false
// I want: true
我将使用一个映射,由数组的字符串化版本索引:
const map=newmap();
const addToMap=arr=>map.set(JSON.stringify(arr),arr);
addToMap([1,2,3]);
addToMap([4,5]);
addToMap([1,2,3]);
log([…map.values()])代码>数组是对象,纯粹基于身份进行比较。Set
正是它应该做的事情。第一个[1,2,3]
对象与您添加的第二个[1,2,3]
对象不同。这是否回答了您的问题?