归并方法

    1. const arr = [1, 2, 3, 4, 5];
    2. /**
    3. * reduce/reduceRight
    4. * v1: 归并函数
    5. * v1: 归并值
    6. * v2: 当前项
    7. * v3: 当前项索引
    8. * v4: 数组本身
    9. * v2: 归并起点
    10. */
    11. const red = arr.reduce(function (x, y, i, arr) {
    12. console.log("i :>> ", i);
    13. return x * y;
    14. });
    15. console.log(red);
    16. const redR = arr.reduceRight((x, y, i, arr) => x * y);
    17. console.log(redR);

    案例: 将班级中同学的名字全部提取出来

    1. const classes = [
    2. {
    3. class: "一班",
    4. students: [
    5. {
    6. name: "小王",
    7. age: 18,
    8. },
    9. {
    10. name: "小李",
    11. age: 21,
    12. },
    13. ],
    14. },
    15. {
    16. class: "二班",
    17. students: [
    18. {
    19. name: "小孙",
    20. age: 16,
    21. },
    22. {
    23. name: "小赵",
    24. age: 28,
    25. },
    26. ],
    27. },
    28. ];
    29. const studentsName = classes.reduce(function (pre, cur, index, array) {
    30. let stus = pre.students.reduce(function (pre, cur, index, array) {
    31. return pre.name.concat(cur.name);
    32. });
    33. return stus.concat(
    34. cur.students.reduce(function (pre, cur, index, array) {
    35. return pre.name.concat(cur.name);
    36. })
    37. );
    38. });
    39. console.log(studentsName);

    案例: 统计

    1. const fruits = ["苹果", "橘子", "梨", "苹果"];
    2. const fruitsCount = fruits.reduce(function (pre, next) {
    3. pre[next] = pre[next] + 1 || 1;
    4. return pre;
    5. }, {});
    6. console.log(fruitsCount);

    案例: 去重

    1. const fruitsOnly = fruits.reduce(function (pre, cur, index, array) {
    2. if (pre.indexOf(cur) == -1) {
    3. pre.push(cur);
    4. }
    5. return pre;
    6. }, []);
    7. console.log(fruitsOnly);