一:map方法:给数组中的每一个元素进行特殊处理后,返回一个新的数组
用法:arr.map(item,index) item表示每个元素,index表示索引
案例一:给数组中每个元素后面加个字
let prices=[50,80,90]
prices=prices.map(item=>{
return item+"元"
})
// prices=prices.map(item=>item+"元")//简写的方式
console.log(prices)// 50元,80元,90元
案例二: 微信小程序: 豆瓣影评,图片地址的更换
let movies=[{id:1,name:"逃学威龙",imgUrl:"http://xxx.douban.com/1.jpg"},{id:2,name:"逃学威龙",imgUrl:"http://xxx.douban.com/2.jpg"},{id:3,name:"逃学威龙",imgUrl:"http://xxx.douban.com/1.jpg"}]
movies=movies.map(item=>{
item.imgUrl=item.imgUrl.replace("xxx","www")
return item
})
console.log(movies)
二、filter方法:过滤出数组中符合要求的元素,返回一个新数组
案例:拿到当前及格的人的数组
let scores=[80,59,10,55,90,88]
scores=scores.filter(item=>{
if(item>=60){
return scores
}
})
console.log(scores)
// let arr=scores.filter(item=>item>=60)//简写,这里如果想重新定义就必须要换名字,不能再使用scores
// console.log(arr)
三、some方法:在数组的判断过程中,判断整体的每一个元素是否全部都符合一项基本要求,只要有一个符合就返回,true
let scores=[80,49,12,50,69]
let result=scores.some(item=>item>=60)
console.log(result)//true
四、every方法: 在数组的判断过程中,判断整体的每一个元素是否全部都符合一项基本要求, 只要其中有一个不符合要求,就返回false
let scores=[80,49,12,50,69]
let result=scores.every(item=>item>=60)
console.log(result)//flase
五、reduce:将数组中的元素整合,返回一个新的内容
用法:arr.reduce((prev,item,index,array)
prev:上一次操作返回的结果 ,可以设置默认值,如果不设置默认值,那么第一个元素就作为第一个prev
item: 本次操作的元素
index:本次操作元素的索引值
array:当前操作的数组
案例一:使用reduce拼接字符串
let arr=["百度","腾讯","阿里","字节"]
let result=arr.reduce((prev,item)=>{
console.log(prev)
return prev+"<li>"+item+"</li>"
},"")
console.log(result)
这里就必须设置默认值,如果并设置第一个元素就不会加上li标签
案例二:利用reduce实现数组去重
let arr=["百度","腾讯","阿里","字节","阿里","腾讯","百度"]
//利用reduce实现数组去重
let result=arr.reduce((prev,item)=>{
//includes判断是有具有指定元素 有t 没有f
if(!prev.includes(item)){
prev.push(item)
}
return prev
},[])
console.log(result)
案例三:统计字符的出现次数
let arr=["a","b","a","c"]
//返回一个对象 统计每一个字符的出现次数 {a:2,w:3}
let result=arr.reduce((prev,item)=>{
if(item in prev){
//找到对应属性值 ++
prev[item]++
}else{
prev[item]=1
}
return prev
},{})
console.log(result)
//这里中括号的解释
let obj={
a:"hello world"
}
var x="a"
console.log(obj.x)//undefined
console.log(obj[x])//hello world