翼度科技»论坛 编程开发 JavaScript 查看内容

JavaScript 数组去重

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
JavaScript 中有多种方法可以实现数组去重,下面是几种常用的方法:
1、使用 Set 去重:Set 数据结构中不能有重复元素,可以将数组转成 Set 类型,再转回数组。
  1. let arr = [1,2,3,4,5,6,2,3,4];
  2. let uniqueArr = [...new Set(arr)];
  3. console.log(uniqueArr);  // [1, 2, 3, 4, 5, 6]
复制代码
2、使用 Array.prototype.filter() 去重: filter() 函数可以过滤数组中不符合条件的元素,可以用来去重。
  1. let arr = [1,2,3,4,5,6,2,3,4];
  2. let uniqueArr = arr.filter((item, index, array) => array.indexOf(item) === index);
  3. console.log(uniqueArr);  // [1, 2, 3, 4, 5, 6]
复制代码
3、使用 for 循环和 indexOf() 去重: 遍历数组,判断当前遍历到的元素在数组中第一次出现的位置是否和当前遍历到的位置相同,如果不同说明该元素之前出现过,则舍去。
  1. let arr = [1,2,3,4,5,6,2,3,4];
  2. let uniqueArr = [];
  3. for(let i = 0; i < arr.length; i++) {
  4.     if(uniqueArr.indexOf(arr[i]) === -1) {
  5.         uniqueArr.push(arr[i]);
  6.     }
  7. }
  8. console.log(uniqueArr);  // [1, 2, 3, 4, 5, 6]
复制代码
4、使用 Object 键值对去重:遍历数组,将数组元素当作对象的键,如果该键不存在,则将其添加到新数组中。
  1. let arr = [1,2,3,4,5,6,2,3,4];
  2. let uniqueArr = [], obj = {};
  3. for(let i = 0; i < arr.length; i++) {
  4.     if(!obj[arr[i]]) {
  5.         uniqueArr.push(arr[i]);
  6.         obj[arr[i]] = true;
  7.     }
  8. }
  9. console.log(uniqueArr);  // [1, 2, 3, 4, 5, 6]
复制代码
5、使用 Array.prototype.reduce() 去重: reduce() 函数可以用来构建新数组,只添加没有出现过的元素。
  1. let arr = [1,2,3,4,5,6,2,3,4];
  2. let uniqueArr = arr.reduce((acc, cur) => acc.includes(cur) ? acc : [...acc, cur], []);
  3. console.log(uniqueArr);  // [1, 2, 3, 4, 5, 6]
复制代码
6、使用 Map 去重: Map 数据结构中不能有重复元素,可以将数组转成 Map类型,再转回数组。
  1. let arr = [1,2,3,4,5,6,2,3,4];
  2. let uniqueArr = Array.from(new Map(arr.map(item => [item, item])).values());
  3. console.log(uniqueArr);  // [1, 2, 3, 4, 5, 6]
复制代码
7、使用 Array.prototype.includes() 去重: 遍历数组,判断当前遍历到的元素是否存在于新数组中,如果不存在则将其添加到新数组中。
  1. let arr = [1,2,3,4,5,6,2,3,4];
  2. let uniqueArr = [];
  3. for(let i = 0; i < arr.length; i++) {
  4.     if(!uniqueArr.includes(arr[i])) {
  5.         uniqueArr.push(arr[i]);
  6.     }
  7. }
  8. console.log(uniqueArr);  // [1, 2, 3, 4, 5, 6]
复制代码
8、使用 Array.prototype.sort() 去重: sort 方法可以将数组元素排序,可以将相邻的重复元素放在一起,然后遍历数组将不同的元素放入新数组中。
  1. let arr = [1,2,3,4,5,6,2,3,4];
  2. let uniqueArr = arr.sort().filter(function (item, index, array) {
  3.     return !index || item !== array[index - 1];
  4. });
  5. console.log(uniqueArr);  // [1, 2, 3, 4, 5, 6]
复制代码
9、使用第三方库 lodash 的 uniq() 去重。
10、使用第三方库 Ramda 的 uniq() 去重。

来源:https://www.cnblogs.com/yuzhihui/p/17066988.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具