以前一般用的给对象加属性或者用indexof这两种方法去重
1. Set方法(es6)
摘自廖雪峰老师的教程下的一篇评论
原理: es6里引入了新的数据类型Map和Set,一眼看到Set就觉得它自动去掉重复的key这个特性很适合做数组去重,评论果然有人和我一样想的。 Array.from():作用是将类数组对象转换为数组对象,还有这种操作?!!
'use strict';
var arr = [
1,
2,
1,
2,
2,
1];
function unique(arr){
return Array.from(
new Set(arr));
};
[...(
new Set([
1,
2,
2,
3]))];
2. filter()方法
原理:filter()方法根据返回值来确认是否抛弃元素。而对于数组重复项,indexOf()方法只会返回第一个匹配到的元素的index,当筛选到重复项时,当前重复项的id自然不等于indexOf的返回值
arr.filter(
function(element,index,array){
return array.indexOf(element) === index;
})