let arr = [1, 2, 3, 4]
// find(n, i, arr) 找出第一个符合条件的数组成成员 接收3个参数
// 查找到第一个符合的成员 退出
// 输出 2
c( arr.find((n, i, arr) => n >1) )
// findIndex(value, index, arr) : 查找第一个符合元素的位置
// 查找到符合元素 直接退出
// 未查找到 返回 -1
let arr = [1, 5, 10, 15]
c( arr.findIndex((value, i, arr) => value > 20) )
let arr = [1, 2, 3, 4, 5]
/**
* recuce(fn(prev, next, i), init)
* @ fn: 回调函数 如果没给return 则prev只有第一次有值 所以必须有return
prev: 如果没给初始值 默认是数组的第一个值
next: 数组的下一个值
i: 迭代的次数
* @ init: 初始值 (如果米给初始值 默认取数组的第一个值)
*/
arr.reduce((prev, next, i) => {
// 输出 1, 3, 6, 10 迭代了4次
log(prev, next, i)
// 这里return 必须给
return prev + next
})
let result = [
{
subject: 'm1',
score: 88,
},
{
subject: 'm2',
score: 98,
},
{
subject: 'm2',
score: 95,
},
]
// 默认初始值给了数字类型 prev初始值是 0 迭代了3次
result.reduce((prev, next, i) => {
log(prev, next, i)
return next.score + prev
}, 0)
// 默认值给了 {} prev初始值是 {}
let arrString = 'abcdeaabc'
arrString.split('').reduce((prev, next) => {
prev[next] ? prev[next]++ : prev[next] = 1
return prev
}, {})
// 默认初始值给了 [] prev 初始值是 []
let sum2 = [1, 2].reduce((prev, next) => {
prev.push(next + 1)
return prev
}, [])