两个例子:
JSON数组
var list1 = [{name: 'a', id: '123'},{name: 'b', id: '1234'},{name: 'c', id: '12345'}]
var list2 = [{name: 'a', id: '123'}]
首先我先使用ES6来处理
var arr = [...list1].filter(res=>{
return [...list2].every(t=>{
return t.id != res.id
})
})
通过js来处理
简单的字符串数组:
var list1 = ['1','2','3','4']
var list2 = ['2','4']
var arr = list1.filter(res=>{
return !list2.includes(res)
})
或者使用indexOf也是可以的,当然使用new Set和has也是可以的
说一下some,他们两者的区别
相同:every和some都有三个参数,即item-当前项,index-当前项的索引值,array-数组本身;
不同:every相当于逻辑关系中的且,只有所有参数都满足条件时,才返回true,一旦有一个不满足,则逻辑中断,返回false
some相当于逻辑关系中的或,只要有一个参数满足条件,就中断遍历,返回true,若遍历完所有参数,没有符合的项,返回false
给大家一个地址里面有详细的ES6取交集、并集、差集