如何构建一组独特的数组?
How to build a Set of unique Arrays?
我想将许多数组添加到 Javascript 集合中,并确保只将唯一数组添加到集合中。但是,当我尝试多次添加同一个数组时,它总是被添加而不是被拒绝。 .has() 方法也总是 returns 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
我会改用 Map,由数组的字符串化版本索引:
const map = new Map();
const addToMap = arr => map.set(JSON.stringify(arr), arr);
addToMap([1, 2, 3]);
addToMap([4, 5]);
addToMap([1, 2, 3]);
console.log([...map.values()]);
我想将许多数组添加到 Javascript 集合中,并确保只将唯一数组添加到集合中。但是,当我尝试多次添加同一个数组时,它总是被添加而不是被拒绝。 .has() 方法也总是 returns 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
我会改用 Map,由数组的字符串化版本索引:
const map = new Map();
const addToMap = arr => map.set(JSON.stringify(arr), arr);
addToMap([1, 2, 3]);
addToMap([4, 5]);
addToMap([1, 2, 3]);
console.log([...map.values()]);