从一个数组中过滤掉另一个数组中的元素
ES6方法 some,every, filter 的用法
some() 方法
- 有一个条件满足就会返回true 不会执行剩余的元素 ,全都不满足返回true
- some() 不会对空数组检测
- some() 不会改变原数组
var arr1=[1,5,3,4,8,6]
var i=0
let res=arr1.some(item=>{
i=i+1
return item>=3
})
console.log(i,res) 2 ,true
var arr1=[8,5,3,4,12,9]
var i=0
let res=arr1.some(item=>{
i=i+1
return item<=2
})
console.log(i,res) 6,false
every()方法
- 每一项都满足条件返回true ,有一个不满足就返回false``
- every() 不会对空数组检测
- every() 不会改变原数组
var arr1=[9,5,2,4,8,6]
var i=0
let res=arr1.every(item=>{
i=i+1
return item>=3
})
console.log(i,res) 3 ,false
var arr1=[8,5,3,4,12,9]
var i=0
let res=arr1.every(item=>{
i=i+1
return item>=2
})
console.log(i,res) 6,true
some 用于判断数组是否存在某一项的时候,every 用于判断数组是否都满足条件的时候
filter()方法
- filter() 创建一个新的数组,新数组的元素,是所有符合指定数组筛选条件的元素
- filter() 不会对空数组进行检测。
- filter() 不会改变原始数组。
var array = [{ num: 3 }, { num: 8 }, { num: 34 }, { num: 23 }, { num: 79 }, { num: 12 }];
var newArr = array.filter(item => item.num == 3)
console.log(newArr,array) // [{num:9}] //[{ num: 3 }, { num: 8 }, { num: 34 }, { num: 23 }, { num: 79 }, { num: 12 }]
使用filter 数组
在一个数组中,过滤掉另一个数组里相同的数据,需要用到 filter和some 的混合方法,第一层用filter 过滤掉与第二个数组相同的元素(用some 的方法,排查出相同的元素然后取反,相同的元素就会被过滤掉)
var arr1 = [{ key: '1', label: '001' }, { key: '2', label: '002' }, { key: '3', label: '003' }, { key: '4', label: '004' }] // 原数组
var arr2 = [{ key: '1', label: '001' }, { key: '4', label: '004' }] // 已经选择过的数组
function filterData (array1, array2) {
let arr = []
arr = array1.filter(item => {
return !array2.some((val) => {
return val.key === item.key
})
})
return arr
}
console.log(filterData(arr1, arr2))