一、数组新增的方法
1、.map()方法 ,给数组中的每一个元素添加特殊处理,返回一个新的数组。
案例1:
let prices=[20,30,40] //20元 30元 40元
let arr = prices.map(function(item){ //item 是每次循环的数组元素
item = item+"元"
retuen item
})
let arr=prices.map(item=>item+"元") //上面的缩写
案例2://微信小程序 模拟 豆瓣电影 豆瓣api 获取电影资料
let movies=[{id:1,name:'逃学威龙',imgUrl:"http://xxx.douban.com/1.png"},{id:2,name:'逃学威龙',imgUrl:"http://xxx.douban.com/1.png"},{id:3,name:'逃学威龙',imgUrl:"http://xxx.douban.com/1.png"}]
movies=movies.map(item=>{ //循环
item.imgUrl= item.imgUrl.replace("xxx","www") //替换
return item
})
console.log(movies)
2、some()方法和every()方法
.every() 依次 拿出数组中的元素与特定的值进行比较,如果一个返回的是假 整体返回就是假,如果全部返回真 ,则为真 一假既假
.some() 一真既真
案例:
let scores=[88,20,33,55,99,100]
// let result=scores.every(item=>{
// return item>=60
// })
// console.log(result)
let result=scores.some(item=>{
return item>=60
})
console.log(result)
3、.filter()过滤方法
filter方法 依次的拿出数组中的元素,返回符合要求元素 返回一个新的数组;默认如果返回真,就相当于返回对应元素
案例:let result=arr.filter(function(item){
return item>30
})
let result=arr.filter(item=>item>30) //上面的缩写
console.log(result)
4、.forEach ()依次拿出数组的元素
5、reduce()方法
reduce方法 具有四个参数 计算处理返回一个结果
1.prev 上次操作的返回结果
2.item 当前处理数组元素
3.index 当前处理数组元素的索引值
4.array 当前对应的数组
默认情况下 第一次的返回结果是第一个元素,如果需要给第一个元素也进行处理 ,需要自定义第一次的返回值
结果等于 最后一次的返回结果
案例;
let result=arr.reduce((prev,item,index,array)=>{
console.log("prev"+prev)
console.log("Item"+item)
console.log("index"+index)
console.log("--------------------------")
return item
})
console.log(result)
案例2、利用reduce求和
let result=arr.reduce((prev,item)=>{
console.log("prev"+prev)
console.log("Item"+item)
console.log("--------------------------")
return prev+item
},0) //0为自定义的第一次返回值
可以简写为:let result=arr.reduce((prev,item)=>item+prev)
案例3、let arr=["百度","腾讯","阿里","京东"]
//将其拼接成<Li></li> 输出拼接后的内容
//reduce拼接
//需要给第一个元素也进行处理 ,需要自定义第一次的返回值
let result=arr.reduce((prev,item)=>{
console.log("prev"+prev)
console.log("Item"+item)
console.log("--------------------------")
return prev+"<li>"+item+"</li>"
},"") //空字符,为自定义的第一次返回值
console.log(result)
面试题一、数组去重问题
let arr=["百度","腾讯","阿里","京东","百度","阿里","京东","百度"]
//得到一个没有重复的新数组 .reduce
let result=arr.reduce((prev,item)=>{
//.includes() 判断数组中是否含有指定元素 有 返回T 没有F
if(!prev.includes(item)){
prev.push(item)
}
return prev
},[]) //第一次返回空数组
console.log(result)
面试题二、统计数组中每一个字符出现次数 ,返回一个对象
//依次拿出数组中元素,判断其出现的次数 {a:2,n:1,}
let arr=["a","a","n","z"]
let result=arr.reduce((prev,item)=>{
//先判断当前是否有 这个属性,如果有属性那么 value++ ,如果没有属性 创造新属性 =1
//item是否存在prev中
//如何判断对象是否有指定属性 用 in
if(item in prev){
prev[item]++
}else{
prev[item]=1
}
return prev
},{})