reduce与filter对比?
filter map依次拿出数组中的内容 1对1 .
reduce 多对一 只返回一个结果.
reduce 参数 计算处理 返回一个结果.
let x1=arr.reduce((prev,item,index,array)=>{})
第一个参数 prev 上一次操作返回的结果.
第二个参数 item 当前要处理的元素.
第三个参数:index 当前处理元素的索引值.
第四个参数:arry 当前的这个数组.
默认状态下,第一次的返回结果就是 第一个元素,结果等于最后一次的返回结果.
例:
1. 数组的拼接(求和)
① let arr=[1,2,3,4]
let result=arr.reduce((prev,item)=>{
return prev+item
})
console.log(result)
② let arr=["百度","腾讯","阿里","京东"]
let result=arr.reduce((prev,item)=>{
console.log(prev)
return prev+"<li>"+item+"</li>"
},"")
console.log(result)
③ 数组去重? 拿到一个新的无重复的数组
let arr=["百度","腾讯","阿里","百度","腾讯","阿里","百度","腾讯","阿里"]
let result=arr.reduce((prev,item)=>{
if(!prev.includes(item)){ //includes 是否包含指定元素 有T 无F
prev.push(item)
}
return prev
},[])
console.log(result)
④ 数组中元素出现的次数?
let arr=["a","v","c","a","v","q","w","c","a"]
let result=arr.reduce((prev,item)=>{
if(item in prev){
prev[item]++
}else{
prev[item]=1
}
return prev
},{})
console.log(result)