首页IT科技set和map用法(记录–10个超级实用的Set、Map使用技巧)

set和map用法(记录–10个超级实用的Set、Map使用技巧)

时间2025-06-04 22:36:23分类IT科技浏览4221
导读:这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 数组转换...

这里给大家分享我在网上总结出来的一些知识             ,希望对大家有所帮助

数组转换

可以使用 Set 将数组转换为不包含重复元素的 Set 对象                    ,再使用 Array.from() 将其转换回数组             。

const arr = [1, 2, 3, 1, 2, 4, 5]; const set = new Set(arr); const uniqueArr = Array.from(set); console.log(uniqueArr); // [1, 2, 3, 4, 5]
优化数据查找

使用 Set 存储数据时       ,查找操作的时间复杂度为 O(1)             ,比数组的 O(n) 要快得多                    ,因此可以使用 Set 来优化数据查找的效率                    。

const dataSet = new Set([1, 2, 3, 4, 5]); if (dataSet.has(3)) { console.log(数据已经存在); } else { console.log(数据不存在); }
并集              、交集                    、差集

Set数据结构可以用于计算两个集合的并集      、交集和差集       。以下是一些使用Set进行集合运算的示例代码:

const setA = new Set([1, 2, 3]); const setB = new Set([2, 3, 4]); // 并集 const union = new Set([...setA, ...setB]); console.log(union); // Set {1, 2, 3, 4} // 交集 const intersection = new Set([...setA].filter(x => setB.has(x))); console.log(intersection); // Set {2, 3} // 差集 const difference = new Set([...setA].filter(x => !setB.has(x))); console.log(difference); // Set {1}
模糊搜索

Set 还可以通过正则表达式实现模糊搜索             。可以将匹配结果保存到 Set 中       ,然后使用 Array.from() 方法将 Set 转换成数组                    。

const data = [apple, banana, pear, orange]; // 搜索以 "a" 开头的水果 const result = Array.from(new Set(data.filter(item => /^a/i.test(item)))); console.log(result); // ["apple"]
使用 Set 替代数组实现队列和栈

可以使用 Set 来模拟队列和栈的数据结构       。

// 使用 Set 实现队列 const queue = new Set(); queue.add(1); queue.add(2); queue.add(3); queue.delete(queue.values().next().value); // 删除第一个元素 console.log(queue); // Set(2) { 2, 3 } // 使用 Set 实现栈 const stack = new Set(); stack.add(1); stack.add(2); stack.add(3); stack.delete([...stack][stack.size - 1]); // 删除最后一个元素 console.log(stack); // Set(2) { 1, 2 }

Map

将 Map 转换为对象
const map = new Map().set(key1, value1).set(key2, value2); const obj = Object.fromEntries(map);
将 Map 转换为数组
const map = new Map().set(key1, value1).set(key2, value2); const array = Array.from(map);
记录数据的顺序

如果你需要记录添加元素的顺序      ,那么可以使用Map来解决这个问题      。当你需要按照添加顺序迭代元素时                    ,可以使用Map来保持元素的顺序                    。

const map = new Map(); map.set(a, 1); map.set(b, 2); map.set(c, 3); map.set(d, 4); for (const [key, value] of map) { console.log(key, value); } // Output: a 1, b 2, c 3, d 4
统计数组中元素出现次数

可以使用 Map 统计数组中每个元素出现的次数              。

const arr = [1, 2, 3, 1, 2, 4, 5]; const countMap = new Map(); arr.forEach(item => { countMap.set(item, (countMap.get(item) || 0) + 1); }); console.log(countMap.get(1)); // 2 console.log(countMap.get(2)); // 2 console.log(countMap.get(3)); // 1
统计字符出现次数

使用Map数据结构可以方便地统计字符串中每个字符出现的次数      。

const str = hello world; const charCountMap = new Map(); for (let char of str) { charCountMap.set(char, (charCountMap.get(char) || 0) + 1); } console.log(charCountMap); // Map { h => 1, e => 1, l => 3, o => 2, => 1, w => 1, r => 1, d => 1 }
缓存计算结果

在处理复杂的计算时              ,可能需要对中间结果进行缓存以提高性能                   。可以使用Map数据结构缓存计算结果      ,以避免重复计算              。

const cache = new Map(); function fibonacci(n) { if (n === 0 || n === 1) { return n; } if (cache.has(n)) { return cache.get(n); } const result = fibonacci(n - 1) + fibonacci(n - 2); cache.set(n, result); return result; } console.log(fibonacci(10)); // 55
使用 Map 进行数据的分组
const students = [ { name: "Tom", grade: "A" }, { name: "Jerry", grade: "B" }, { name: "Kate", grade: "A" }, { name: "Mike", grade: "C" }, ]; const gradeMap = new Map(); students.forEach((student) => { const grade = student.grade; if (!gradeMap.has(grade)) { gradeMap.set(grade, [student]); } else { gradeMap.get(grade).push(student); } }); console.log(gradeMap.get("A")); // [{ name: "Tom", grade: "A" }, { name: "Kate", grade: "A" }]
使用 Map 过滤符合条件的对象

在实际开发中                   ,我们常常需要在一个对象数组中查找符合某些条件的对象。此时              ,我们可以结合使用 Map 和 filter 方法来实现                   。比如:

const users = [ { name: Alice, age: 22 }, { name: Bob, age: 18 }, { name: Charlie, age: 25 } ]; const userMap = new Map(users.map(user => [user.name, user])); const result = users.filter(user => userMap.has(user.name) && user.age > 20); console.log(result); // [{ name: Alice, age: 22 }, { name: Charlie, age: 25 }]

首先,我们将对象数组转换为 Map                   ,以便快速查找                    。然后                    ,我们使用 filter 方法来过滤符合条件的对象。

这里我们列举了一些使用Set和Map的实用技巧,它们可以大大简化你的代码             ,并使你更有效地处理数据             。Set和Map是JavaScript中非常有用的数据结构                    ,值得我们在编写代码时好好利用                    。

本文转载于:

https://juejin.cn/post/7225425984312328252

如果对您有所帮助       ,欢迎您点个关注             ,我会定时更新技术文档                    ,大家一起讨论学习       ,一起进步       。

声明:本站所有文章      ,如无特殊说明或标注                    ,均为本站原创发布             。任何个人或组织              ,在未征得本站同意时      ,禁止复制       、盗用                    、采集             、发布本站内容到任何网站       、书籍等各类媒体平台                    。如若本站内容侵犯了原著者的合法权益                   ,可联系我们进行处理       。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
seo怎么优化方案(seo 优化方法) 如何提高网站seo排名(提升网站排名的关键:SEO优化排名服务)