📌  相关文章
📜  使用 Map 数据结构从未排序的数组中删除重复项(1)

📅  最后修改于: 2023-12-03 15:36:31.895000             🧑  作者: Mango

使用 Map 数据结构从未排序的数组中删除重复项

在开发中,经常会遇到需要从一个数组中删除重复项的情况。这时候使用 Map 数据结构就可以很方便地完成这个任务。

Map 数据结构简介

Map 是 ES6 中新增的一种数据结构,它类似于对象,主要是用来存储键值对的。不同的是,Map 中的键和值可以是任意类型的,而对象中的键必须是字符串类型。此外,Map 中的键和值是有序的,而对象中的键是无序的。

实现步骤
  1. 创建一个空的 Map 对象
  2. 遍历数组中的每个元素
  3. 如果 Map 中不存在当前元素,就将当前元素作为键,值为 true 存入 Map 中
  4. 遍历结束后,Map 中存储了数组中所有不重复的元素
  5. 将 Map 中所有的键转换为数组返回
代码实现

下面是使用 Map 数据结构从未排序的数组中删除重复项的代码实现:

function unique(arr) {
  const map = new Map();
  for (let i = 0; i < arr.length; i++) {
    if (!map.has(arr[i])) {
      map.set(arr[i], true);
    }
  }
  return Array.from(map.keys());
}

上面的代码定义了一个名为 unique 的函数,它接收一个数组作为参数,并返回一个新的数组,新数组中包含了原数组中所有不重复的元素。在函数的内部,首先创建了一个空的 Map 对象。然后遍历数组中的每个元素,如果 Map 中不存在当前元素,就将当前元素作为键,值为 true 存入 Map 中。最后将 Map 中所有的键转换为数组返回即可。函数的使用示例如下:

const arr = [1, 5, 2, 3, 4, 5, 1, 2];
const result = unique(arr);
console.log(result); // [1, 5, 2, 3, 4]
总结

使用 Map 数据结构可以很方便地从未排序的数组中删除重复项。相比使用 for 循环和数组操作方法,使用 Map 的代码更加简洁、可读性更好。同时,由于 Map 中的键和值是有序的,因此返回的数组中也会保持原来的顺序。