// 数组API 迭代方法,遍历元素
// 1. forEach , map
// 2. every , some
// 3. filter , find , findIndex
// 4. reduce
// forEach 没返回值
const arr = [1, 2, 3, 4, 5, 6]
arr.forEach(function (item, key, arr) {
console.log(item)
// console.log(item, key, arr)
//只有item是必需有的
return item
})
console.log('---------------')
// map 有返回值
let result = arr.map(function (item, key, arr) {
// console.log(item*2)
return item * 2
})
console.log(result)
console.log('---------------')
// every , some : 断言/判断 , true / false
// arr = [1, 2, 3, 4, 5, 6]
// every() 全部都满足返回 true , 否则 false
// 全部大于0
arr.every(function (item) {
console.log(item > 0)
})
// 箭头函数
console.log(arr.every(item => item > 0)) //全部大于0 true
console.log(arr.every(item => item > 3)) //全部大于3 false
// some() 只要有一个条件满足,就返回 true
console.log(arr.some(item => item > 3))
console.log(arr.some(item => item > 10))
console.log('---------------')
// filter 将满足条件的元素打包到一个数组中返回
console.log(arr.filter(item => item > 3)) //4,5,6
console.log(arr.filter(item => item > 3)[0]) //4
console.log(arr.filter(item => item > 3)[1]) //5
// find 找到第一个就返回
console.log(arr.find(item => item > 3)) //4
console.log(arr.findIndex(item => item > 3)) //索引4,值3
console.log('-----------------')
// reduce : 归并
/**
* reduce 参数
* 1.回调函数
* 2.初始值,如0,''
*/
/**
*
* 回调参数说明:
* 1. acc: 累加器,结果不断的累加给它,最终返回也是它
* 2. cur: 当前元素
* 3. key: 当前元素的索引
* 4. 当前正在遍历的数组
* cur , key , arr , 与之前的迭代方法参数一样
*
*/
// arr.reduce(function (acc, cur, key, arr) { }, init)
// arr = [1, 2, 3, 4, 5, 6]
result = arr.reduce(function (acc, cur, key, arr) {
return acc + cur // 数组累加
}, 0)
console.log(result)
result = arr.reduce(function (acc, cur, key, arr) {
// acc,arr 是必选参数
// 观察过程
console.log(`acc=${acc}, cur=${cur}, key=${key},arr=${arr}`)
return acc + cur
}, 0)
console.log(result)
// arr.reduceRight 反向
console.log('---------------------')
result = arr.reduceRight(function (acc, cur) {
console.log('<li>' + acc + '</li>')
return acc + cur
}, '')
console