数组去重的三种方法
function quchong(arr){ let brr = []; for(var i = 0;i<arr.length;i++){ if(brr.indexOf(arr[i]) < 0){ brr.push(arr[i]); } } return brr; } function quchong(arr){ let obj = {}; let brr = []; for(var i=0;i<arr.length;i++){ if(!obj[arr[i]]){ obj[arr[i]] = 1; brr.push(arr[i]); } } return brr; }
上面去重的方法老生常谈了,一种是用数组的indexOf的方法,检索数组里面是否存在该元素,如果不存在就push进另外一个数组里面。
一种是利用对象的key值不会重复的特性。
ES6提供了一种新的数据结构Set,类似于数组,但是成员的值都是唯一的,没有重复的值。
Set本身是一个构造函数,用来生成Set数据结构。
const s = new Set();
然后也可以接受一个数组来作为参数,用来初始化。
const set = new Set([1,2,3,3,4,5]);
[...set] //[1,2,3,4,5]
所以数组去重的另外一种方法:
[...new Set(array)]
或者用另外一种方式转化为数组,Array.from()的方法,将一个set对象转化为Array对象。
Array.from方法从一个类数组对象或者可迭代对象中创建一个新的数组实例。可迭代的对象是指那些具有Symbol.iterator属性的对象。可以使用for...of进行遍历。比如:Array,Map,Set,String,arguments,NodeList等对象。
Array.from(new Set(a));
下节着重讲下:ES6中的Set结构