对于数组,ES6中新增4个很实用的方法,分别有:map ,reduce,filter,forEach。接下来我们来一一讲解。
1、map 映射 一个对一个
let arr = [6,10,12, 5, 8]
let result = arr.map(function (item) {
return item*2
})
let result2 = arr.map(item=>item*2) // es6的箭头函数简写,若想了解,后面的文章有介绍
console.log(result)
console.log(result2)
let score = [18, 86, 88, 24]
let result3 = score.map(item => item >= 60 ? '及格' : '不及格')
console.log(result3)
结果如下:
2、reduce 汇总 一堆出来一个(用于比如,算个总数,算个平均)
var arr = [1, 3, 5, 7]
var result = arr.reduce(function (tmp, item, index) {
//tmp 上次结果,item当前数,index次数1开始
console.log(tmp, item, index)
return tmp + item
})
console.log(result)
结果如下:
var arr = [1, 3, 5, 7]
var result = arr.reduce(function (tmp, item, index) {
if (index != arr.length - 1) { // 不是最后一次
return tmp + item
} else {
return (tmp + item)/arr.length
}
})
console.log(result) // 平均值
结果
// 4
3、filter 过滤器 保留为true的结果
var arr = [12, 4, 8, 9]
var result = arr.filter(item => (item % 3 === 0) ? true : false)
console.log(result)
var result = arr.filter(item => item % 3 === 0)
console.log(result)
结果 // [12, 9]
var arr = [
{ title: '苹果', price: 10 },
{ title: '西瓜', price: 20 },
]
var result = arr.filter(json => json.price >= 20)
console.log(result)
结果 // [ { title: '西瓜', price: 20 }]
4、forEach 循环迭代 — 相当于for循环遍历
var arr = [12, 4, 8, 9]
var result = arr.forEach(item => console.log(item))
结果 // 12
// 4
// 8
// 9
var result = arr.forEach((item, index)=>console.log(item, index))
结果 // 12 0
// 4 1
// 8 2
// 9 3