js中数组filter过滤奇偶数_js数组对象过滤——filter,find,some,every

1、filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

原数组不变

不会对空数组进行检测

let arr1 = [1,2,3,4]

let arr2= arr1.filter(item=>item===1)

console.log(arr1,'arr1') //[1,2,3,4] arr1

console.log(arr2, 'arr2') //[1] arr2

let arr3=[{

id:1,

name:'aa',

desc:'aaaa'},{

id:2,

name:'bb'},{

id:3,

name:'aa'}]

let arr4= arr3.filter(item=>item.name === 'aa')

console.log(arr4,'arr4') //[{id:1,name:'aa', desc:'aaaa'},{id:3,name:'aa'}] arr4

2、find() 对于空数组,函数是不会执行的。

不会改变原数组

返回符合测试条件的第一个数组元素值

let arr5 = [1,2,1,3,4,5]

let arr6= arr5.find(item=>item===1)

console.log(arr6,'arr6') //1 arr6

let arr7= arr3.find(item=>item.name === 'aa')

console.log(arr7,'arr7') //{id:1,name:'aa',desc:'aaaa'} arr7

3、some 用于检测数组中的元素是否满足指定条件

会依次执行数组的每个元素-如果有一个元素满足条件(即只要有条件满足即可相当于或),则表达式返回true , 剩余的元素不会再执行检测

----------------------如果没有满足条件的元素,则返回false

let someArr1 = [1,2,3,4]

let someArr2= someArr1.some(item=>item === 1)

console.log(someArr2,'someArr1') //true someArr1

let someArr4=[{

id:1,

name:'bb'},{

id:4,

name:'cc'},{

id:1,

name:'dd'}]

let someArr3= someArr4.find(info=>{return arr3.some(item=>item.id ===info.id)

})

console.log(someArr3)//{id:1,name:'bb'}some

some()方法还可用于对象数组取交集

testSome() {

const arr1= [{ name: 'name1', id: 1 }, { name: 'name2', id: 2 }, { name: 'name3', id: 3 }, { name: 'name5', id: 5}]

const arr2= [{ name: 'name1', id: 1 }, { name: 'name2', id: 2 }, { name: 'name3', id: 3 }, { name: 'name4', id: 4 }, { name: 'name5', id: 5}]

const result= arr2.filter(function(v) {return arr1.some(n => JSON.stringify(n) ===JSON.stringify(v))

})

console.log(result)//[{ name: 'name1', id: 1 },{ name: 'name2', id: 2 },{ name: 'name3', id: 3 },{ name: 'name5', id: 5 }]

},

4、every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)

every() 方法使用指定函数检测数组中的所有元素-如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测

------------------------------------------如果所有元素都满足条件,则返回 true

let everyArr = [1,2,3,4]

let everyArr2= everyArr.every(item=>item===1)

console.log(everyArr2,'everyArr2') //false "everyArr2"

every()方法还可用于对象数组取差集

testEvery() {

let arr1= [{ name: 'name1', id: 1 }, { name: 'name2', id: 2 }, { name: 'name3', id: 3}]

let arr2= [{ name: 'name1', id: 1 }, { name: 'name4', id: 4 }, { name: 'name5', id: 5}]

let result= arr1.filter(function(v) {return arr2.every(n => JSON.stringify(n) !==JSON.stringify(v))

})

console.log(result)//[ { name: 'name2', id: 2 }, { name: 'name3', id: 3 } ]

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值