filter
filter方法可以过滤符合条件的数值,返回一个新数组,可以利用filter和indexOf进行数组去重操作(indexOf返回的是该数组内的值第一次出现的索引,若无该值返回-1)
1 2 | var arr =[1,2,3,4,4,2] ; arr = arr.filter((item,index)=>{(item, index) => <br> arr.indexOf(item) === index<br>}) //arr--[1,2,3,4] |
some
数组.forEach方法会循环数组,且会进行一个完整的循环,无法被终止,浪费性能
数组.some方法在找到数据后就可以使用return true终止some
1 2 3 4 5 6 7 | const arr =[1,2,3,4] ; arr.some((item,index)=>{ if (item=== "3" ){ console.log(index); retuen true } }) |
every
数组.every常用来判断是否全选,只有条件全部满足才返回true
1 2 3 4 5 6 | const arr=[ {id:1,name: 'zs' ,state: true }, {id:2,name: 'zs' ,state: false }, {id:3,name: 'zs' ,state: true }, ] const result = arr.every(item=>item.state) |
reduce
数组.reduce是一个函数循环累加器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | const arr=[ {id:1,name: '西瓜' ,state: true ,price:10,count:1}, {id:2,name: '榴莲' ,state: true ,price:20,count:2}, {id:3,name: '草莓' ,state: true ,price:30,count:3}, ] //累加选中的水果价格 //普通做法 let sum = 0; arr.filter(item=>item.state).forEach(item=>{ sum += item.price*item.count }) //使用reduce,不用在外面定义sum,直接在方法内定义 //arr.filter(item=>item.state).reduce((结果,item)=>{},初始值) arr.filter(item=>item.state).reduce((sum,item)=>{ return sum += item.price*item.count },0) |