javascript - 如何构建一组独特的数组?
问题描述
我想将许多数组添加到 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
解决方案
我会改用 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()]);
推荐阅读
- git - 如何让 git 只存储我的用户名而不是我的密码?
- python - 分段函数 lmfit
- mysql - MySQL 查询以查找具有肤色变体的表情符号记录
- azerothcore - [错误]:“字段列表”中的未知列“DamageModifier”
- unity3d - 从另一个场景中查找对象
- java - Android MVP 使用 API 调用处理视图的最佳方式
- vim - Vim - 模仿其他语言的 ZenCoding/Emmet(比如 C# 的 ZenSharp)?
- go - go - 如何提高执行时间
- angular - 检查 Observable(http 请求)是否返回了一个值,如果它没有等待它?
- duplicates - 有没有办法或代码在 opencart 上复制类别?