例子: const set = new Set(); [2, 3, 5, 4, 5, 2, 2].forEach(x => set.add(x) ); const arr = [...set]; console.log(arr); // [ 2, 3, 5, 4 ]稍做一下解释: 因为,ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 所以,可以做出这样的方法;原文:https://www.cnblogs.com/cnblogs-jcy/p/8508318.html
自从有了es6的set数据结构,数组的去重可以简单用一行代码实现,比如下面的方式let arr = [1, 2, 2, 3, 4]
function unique (arr) {return [...new Set(arr)]
}
console.log(unique(arr)) // [1, 2, 3, 4]但是当数组的项不再是简单的数据类型时,比如是对象时,这种方法就会导致错误,比如下面的结果let arr = [{ name: ‘a‘, num: 1},{ name: ‘b‘, num: 1},{ name: ‘c‘, num: 1},{ name: ‘d‘, num: 1},{ name: ‘a‘, num:...
之前对数组做去重有很多方法,但大多比较麻烦,现在用ES6里面的set方法非常方便直接上代码 <!doctype html><html><head><meta charset="utf-8"><title>无标题文档</title></head><body><script>function 初级写法(){let arr = [3,5,2,1,3,2,4];let setArr =new Set( arr ); // set方法不允许重复 此时setArr已经去重了let newArr = [];for( let i of setArr ){// set不能用普通的for循环和for in 循环 但是可以用foreach ...
本篇文章给大家带来的内容是关于如何使用es6实现去重(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。以下是三种方法从数组里去重,并且返回唯一的值。我最喜欢的方式是使用Set,因为它是最短最简单的。const array = [5, 2, 4, 5, 3];
console.log([...new Set(array)])
console.log(array.filter((item, index) => array.indexOf(item) === index))
console.log(array.reduce((unique, item) => u...
本篇文章给大家带来的内容是关于ES6如何实现数组去重和重复元素统计,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。一、去重这里利用到了ES6的Set结构不允许数据重复的特性let arr1 = [1,1,2,3,1,2,4,2];
//先将数组转化为Set数据类型,然后再转回数组类型
let dedupeArr = Array.from(new Set(arr1));二、统计let count = 0;
let obj = {}; //最终返回的数据
dedupeArr.forEach(i=>{count = 0;arr1.forEach(j=...
本文实例讲述了JS实现集合的交集、补集、差集、去重运算。分享给大家供大家参考,具体如下:
ES5写法:
///集合取交集
Array.intersect = function () {var result = new Array();var obj = {};for (var i = 0; i < arguments.length; i++) {for (var j = 0; j < arguments[i].length; j++) {var str = arguments[i][j];if (!obj[str]) {obj[str] = 1;}else {obj[str]++;if (obj[str] == arguments.length){result.push(str);}}}}re...
数组对象去重复的原理很简单,就是利用对象,对象的key值只有一个。代码如下const template = [{group_id: 1,name: 1},{group_id: 2,name: 2},{group_id: 3,name: 3},{group_id: 1,name: 1},{group_id: 2,name: 2},] const hash = {}let templateList = template.reduceRight((item, next) => {if (!hash[next.group_id]) hash[next.group_id] = true && item.push(next)return item}, [])console.log(templateList)欢迎关注我的...
ES6数组去重的三个简单办法
简单说一下利用ES6实现数组去重的三个办法。
第一种: 利用Map对象和数组的filter方法
贴上相关代码 打印后的结果 通过打印我们发现,确实实现了我们想要的效果。那么下面简单来解释一下。 1.Map对象是ES6提供的一个新的数据结构,其中has的办法是返回一个布尔值,表示某个值是否存在当前的Mp对象之中,set的办法是给Map对象设置key/value。 2.filter() 方法创建一个新的数组,新数组中的元素是通过检查...