SOURCE

// https://www.jianshu.com/p/e375ba1cfc47
// arr.reduce(callback, initValue)

// 使用arr.concat()和 使用arr.push()来操作一个数组,有什么区别?
// 返回值的区别

// 没有设置初始值,index从下标索引为1的位置开始
// const arr = [1, 2, 3, 4]
// const num = arr.reduce((pre, cur, index, arr)=> {
//     console.log(pre, cur, index, arr)
//     return pre + cur
// })
// console.log(num)

// 设置初始值,index下标索引从0开始,pre初始值为设置的initValue值
// const arr = [1, 2, 3, 4]
// const num = arr.reduce((pre, cur, index, arr) => {
//     console.log(pre, cur, index, arr)
//     return pre + cur
// }, 0)
// console.log(num)

// const arr = [1, 2, 3, 4]
// 数组的reduce方法的应用 
// 求和
// const num = arr.reduce((pre, cur) => {
//     return pre + cur
// }, 0)
// console.log(num)

// 求积
// const num = arr.reduce((pre, cur) => {
//     return pre*cur
// }, 1)
// console.log(num)

// 统计数组中元素出现的次数
// const arr = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice']
// const obj = arr.reduce((pre, cur) => {
//     if (pre.hasOwnProperty(cur)) {
//         pre[cur]++
//     } else {
//         pre[cur] = 1
//     }
//     // 回调函数每执行一次都要把pre的值给返回
//     return pre
// }, {})
// console.log(obj)

// 去除数组中重复的元素
// const arr = [1,2,3,4,4,1]
// const newArr = arr.reduce((pre, cur) => {
//     if (!pre.includes(cur)) {
//         return pre.concat(cur)
//     } else {
//         return pre
//     }
// }, [])
// console.log(newArr)

// 将二维数组转换成一维数组
// const arr = [[0, 1], [2, 3], [4, 5]]
// const newArr = arr.reduce((pre, cur) => {
//     return pre.concat(cur)
// }, [])
// console.log(newArr)

// 将多维数组转换成一维数组
// function parseArr(arr) {
//     return arr.reduce((pre, cur) => {
//         return pre.concat(Array.isArray(cur) ? parseArr(cur) : cur)
//     }, [])
// }
// const arr = [[0, 1], [2, 3], [4,[5,6,7]]]
// console.log(parseArr(arr))

// 对象里的属性求和
// const result = [
//     {
//         subject: 'math',
//         score: 10
//     },
//     {
//         subject: 'chinese',
//         score: 20
//     },
//     {
//         subject: 'english',
//         score: 30
//     }
// ]
// const sum = result.reduce((pre, cur) => {
//     return pre + cur.score
// }, 0)
// console.log(sum)


console 命令行工具 X clear

                    
>
console