Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何构建一组独特的阵列?_Javascript_Arrays_Set_Unique - Fatal编程技术网

Javascript 如何构建一组独特的阵列?

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

我想向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, 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]
对象不同。这是否回答了您的问题?