首页 > 解决方案 > 如何构建一组独特的数组?

问题描述

我想将许多数组添加到 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

标签: javascriptarrayssetunique

解决方案


我会改用 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()]);


推荐阅读