ES6中的数组方法:find、filter、every、some、includes、reduce
1.find 找到需要找到的那一项,如果找不到就返回undifined,找一个正确的就不往后找了
(find返回的是找到的那一项)
const bookArr=[
{
id:1,
bookName:"三国演义"
},
{
id:2,
bookName:"水浒传"
},
{
id:3,
bookName:"红楼梦"
},
{
id:4,
bookName:"西游记"
}
];
console.log(bookArr.find(item=>item.id===1))
{id:1,bookName:"三国演义"}
2.filter 把所有符合条件的选项放在一个新数组中返回,返回一个过滤后的新数组
let arr = [1,23,4,56];
let b = arr.filter((item,index)=>{
console.log("item",item);
console.log("index",index);
return item>20; //根据回调函数的返回值,返回true就留下,返回false不要;})
console.log("b",b);[23,56]
3.evrery()如果每一个都是true,返回的都是true;假如有一个为false的话,则为false。返回的是一个布尔值 ;不修改原数组。找到一个false,就立马返回布尔值。
let arr=[3,5,13,19]
let b=arr.every((item,index)=>{
return item>18
})
console.log(b) false
4.some( ).只要找到数组中符合一个条件的,就返回true,而且不在继续往后寻找
5.includes 存在就返回true,不存在就返回false ,返回的是一个布尔值
6.reduce 收敛,求和;reduce()方法返回的是最后一次调用回调函数的返回值
let arr = [12,3,45,6,78];
let a = arr.reduce((prev,next)=>{
// prev : 第一次代表数组的第一项,以后都代表上一次回调函数的返回值;
console.log(prev,next);
return prev +next;
}); //arr数组变为[100,12,3,45,6,78];
console.log(a);
涉及到对象数组
let arr = [{count:3,price:10},{count:2,price:20},{count:6,price:12}];/*let s = arr.reduce((prev,next)=>{
if(typeof prev==="number"){
return prev+ next.count*next.price;
}else{
return prev.count*prev.price + next.count*next.price;
}
})*/let s = arr.reduce((prev,next)=>{ return prev + next.count*next.price;},0);console.log(s);
reduce还可以拼接数组
let ee = [[12,3,45,6],[7,88],[9]].reduce((prev,next)=>{ return prev.concat(next);})
//[12,3,45,6,7,88,9]
取数组 filter和map相连
allCompanies.filter(company => checkedCompanyIds.indexOf(company.business_unit_id) > -1).map(item => item.business_unit_name).join('、')
fromJS(this.state.checkedCompanyIds).toJS() 取的是数组 [ ]
