1. 去重
方法一: set 去重
ES6 提供了新的数据结构 Set. 它类似于数组, 但是成员的值都是唯一的, 没有重复的值.
Set 函数可以接受一个数组 (或类似数组的对象) 作为参数, 用来初始化.
- function unique (arr ){
- var x = new Set(arr);
- return [...x];
- };
- unique([1,2,3,4,5,2,3,4]) //1,2,3,4,5
方法二: filter 去重
filter()接收的回调函数, 其实可以有多个参数. 通常我们仅使用第一个参数, 表示 Array 的某个元素. 回调函数还可以接收另外两个参数, 表示元素的位置和数组本身:
- let arr = [1,2,3,4,5,6,7,4,5,6]
- arr.filter(function(item,index,arr){
- return arr.indexOf(item) === index
- })
- //[1,2,3,4,5,6,7]
2. 筛选
方法一: for 循环遍历
如: 场景: 筛选出两个数组中相等的值
- function uniqueTree (uniqueArr,Arr) {
- let uniqueChild = []
- for(var i in Arr){
- for(var k in uniqueArr){
- if(uniqueArr[k] === Arr[i]){
- uniqueChild.push(uniqueArr[k])
- }
- }
- }
- return uniqueChild
- }
- let a = [2, 10, 37, 38, 39, 4];
- let b = [1,2,3,4,5,6,7,8,9,10];
- uniqueTree(a,b) //2,4,10
方法二: filter 过滤掉相同项
- var a=[1,2,3,4,5]
- var b=[2,3,7,8,9]
- a.filter(item=>b.indexOf(item)==-1) //1,4,5
方法三: filter+includes // 留下相同项
- var a=[1,2,3,4,5]
- var b=[2,3,7,8,9]
- a.filter(item=>b.includes(item)) //2,3
来源: http://www.jianshu.com/p/60f5fcefa9fd