当前位置: 首页 > article >正文

reduce使用场景

一、介绍基本用法

二、使用场景

聚合,包括求和、求平均值、出现的次数等

1. 数组求和、求积、计算数组对象中某属性的总和

    const numbers = [1, 2, 3, 4, 5];

    let res = numbers.reduce((pre, cur, index) => {
      pre += cur;
      if (index === numbers.length - 1) {
        return pre / numbers.length;
      } else {
        return pre;
      }
    }, 0);

    console.log(res);

 var data = [
      {
        subject: "math",
        score: 10,
      },
      {
        subject: "chinese",
        score: 20,
      },
      {
        subject: "english",
        score: 30,
      },
    ];
    let res = data.reduce((pre, cur) => {
      return pre + cur.score;
    }, 0);

    console.log(res);

2. 数组去重

  let data = [1, 2, 3, 4, 1, 2, 3, 5, 6, 7, 8];
    let res = data.reduce((pre, cur) => {
      if (pre.includes(cur)) {
        return pre;
      } else {
        pre.push(cur);
        return pre;
      }
    }, []);

    console.log(res);

3. 统计元素出现的次数

// 输出: { Alice: 2, Bob: 1, Tiff: 1, Bruce: 1 }

  const names = ["Alice", "Bob", "Tiff", "Bruce", "Alice"];

    let res = names.reduce((pre, cur) => {
      if (pre[cur]) {
        pre[cur]++;
      } else {
        pre[cur] = 1;
      }

      return pre;
    }, {});

    console.log(res);

4. 数组扁平化

 const data = [1, 2, [3, 4, [5, 6, 7]], 8, 9, [10, 11]];
    const myFlat = (arr) => {
      return arr.reduce((pre, cur) => {
        return pre.contact(Array.isArray(cur) ? myFlat(cur) : cur);
      }, []);
    };
    console.log(res);

5. 分组

在这里插入图片描述

  const people = [
      { name: "Alice", age: 21 },
      { name: "Max", age: 20 },
      { name: "Jane", age: 20 },
    ];

    let res = people.reduce((pre, cur) => {
      if (!pre[cur.age]) {
        pre[cur.age] = [];
      }
      pre[cur.age].push(cur);
      return pre;
    }, {});

    console.log(res);

http://www.kler.cn/a/287978.html

相关文章:

  • SpringMVC学习笔记(一)
  • Linux下编译安装Nginx
  • 深度神经网络DNN反向传播BP算法公式推导
  • Fish Agent V0.13B:Fish Audio的语音处理新突破,AI语音助手的未来已来!
  • 前端怎么获取视口大小
  • Apache Paimon、Apache Hudi、Apache Iceberg对比分析
  • 【k8s系列】Kubernetes Service 深度解析:从基础到实战
  • 如何使用 TortoiseGit(小乌龟)进行分支创建、切换与合并以及解决冲突
  • SpringMvc详解
  • 进程间通信——IPC机制(二)消息队列
  • 设计模式创建型模式之原型模式
  • Android TV的行添加和行中数据项添加
  • 3. 创建一个新的 Git 仓库
  • MySQL之数据库基础
  • SpringBoot项目集成支付宝
  • 2024.8.28 C++
  • 物联网之云平台架构
  • 详细解说:ansible自动化运维项目
  • python基础(16面试题附答案一)
  • 【随记】开源 AI(Open source AI)
  • read()和readlines()的区别
  • DReg-NeRF: Deep Registration for Neural Radiance Fields论文解读
  • Flask框架 完整实战案例 附代码解读 【3】
  • 【ag-grid】列宽设置不生效探索
  • 基于vue框架的超市管理系统y9992(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
  • Linux_kernel简介01