通过js把具有相同属性的对象的值进行合并,并生成新的数组对象的方法。

2023-11-13

通过js把具有相同属性的对象的值进行合并,并生成新的数组对象的方法。

在日常开发的时候,我们有时候会遇到这样的需求,
要求把具有相同属性名的对象进行合并,如下例子所示

<script>
    var arrayName = [{
        "id":"1",
        "name":"小明",
        "course":"语文"
    }, {
        "id":"2",
        "name":"小张",
        "course":"政治"
    }, {
        "id":"1",
        "name":"小明",
        "course":"历史"
    }, {
        "id":"3",
        "name":"小王",
        "course":"数学"
    }, {
        "id":"4",
        "name":"小李",
        "course":"政治"
    }, {
        "id":"5",
        "name":"小红",
        "course":"语文"
    }, {
        "id":"3",
        "name":"小王",
        "course":"化学"
    },{
        "id":"1",
        "name":"小明",
        "course":"物理"
    }]

    //设置两个不同的数组,
    //一个数组存放所有的id,如果id重复,则进行不同的操作。
    //另一个数组存放新的对象数组
    //  思路
    //通过对之前的数组的循环,进行判断处理,
    //把不存在相同id的对象(即判断indexOf的值是否为-1)放入新的数组内。
    //如果不等于-1,则代表存在相同的id值,这是,就把相同id值的对象,需要合并的值进行合并
    //放入到新的数组内。
    //这样就可以解决问题了。

    var idArray = [];
    var newAarray = [];  

    arrayName.forEach(function (ele, i) {

        if (idArray.indexOf(arrayName[i].id) === -1) {

            newAarray.push({
                'id':arrayName[i].id,
                'name': arrayName[i].name,  
                'course': [arrayName[i].course]
            })

            idArray.push(arrayName[i].id);

        }else {

            newAarray.forEach(function (dom,k) {
                if (newAarray[k].id == arrayName[i].id) {
                    newAarray[k].course.push(arrayName[i].course)  //把具有相同id的course值进行合并
                }
            })

        }
    })

    console.log(newAarray)


</script>

数据处理后的效果图

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过js把具有相同属性的对象的值进行合并,并生成新的数组对象的方法。 的相关文章

随机推荐

  • guid会不会重复_详解oracle数据库唯一主键SYS_GUID()

    概述 在oracle8i以后提供了一个生成不重复的数据的一个函数sys guid 一共32位 生成的依据主要是时间和机器码 具有世界唯一性 类似于java中的UUID 都是世界唯一的 SYS GUID SYS GUID同Oracle管理员所
  • 阿里影业的稳健业绩来源:科技+内容塑造韧性,应对市场变化

    随着 阿凡达 水之道 简称 阿凡达2 预售佳绩的显现 电影业的复苏已然箭在弦上 12月7日 阿凡达2 正式开启预售 灯塔专业版数据显示 其预售开启4小时后 总票房破500万 6小时左右突破1000万 截至12月8日下午16 58 53 这个
  • 第一次竞赛-D.量子能力猫

    猫从薛定谔的箱子里成功存活并逃脱出来 这时它发现它已经掌握了量子力学的原理并拥有运用量子的能力 即便这样它还是克服不了它喜欢钻入纸箱的天性 假设现在有一排纸箱的一端从0开始依次编号 这只猫可以以如下的方式在箱子之间行动 走到相邻箱子 从第X
  • Pyqt5设置窗口的背景

    Pyqt5设置窗口的背景 一 使用setStyleSheet 函数设置窗口背景 二 使用QPalette设置窗口背景 三 通过资源文件设置窗口背景 一 使用setStyleSheet 函数设置窗口背景 在使用setStyleSheet 函数
  • JS:概述、使用方式、数据类型、运算符和流程控制语句

    什么是JS JavaScript是一门客户端轻量级脚本语言 它不需要编译 直接就可以被浏览器解析执行 每一个浏览器都有JS的解析引擎 该语言用来控制html元素 让界面有一些动态的效果 增强用户和html页面的互动 1992年 Nombas
  • 开关电源的八大损耗

    开关电源的八大损耗 沙漠的甲壳虫的博客 CSDN博客 开关电源的损耗大部分来自开关器件 MOSFET 和二极管 另外小部分损耗来自电感和电容 但是 如果使用非常廉价的电感和电容 具有较高电阻 将会导致损耗明显增大 选择IC 时 需要考虑控制
  • 国际网络专线:连接全球的数字高速公路

    国际网络专线是一种高速 可靠的网络服务 可以连接全球各地 为企业提供快速的数据传输和通信 随着全球化的发展和信息技术的不断进步 越来越多的企业需要跨越国界进行商务活动和数据传输 国际网络专线成为实现这一目标的重要途径之一 国际网络专线通过使
  • python如何输出一个数组_使用Python实现分别输出每个数组

    使用Python实现分别输出每个数组 我就废话不多说了 直接上代码吧 a 1 2 3 4 5 6 7 a b c i 0 while i print a i i 1 a 1 2 3 4 5 6 7 a b c for i in range
  • 特征值处理-机器学习

    综述 如上图所示是一个经典的机器学习问题框架图 数据清洗和特征挖掘的工作是在灰色框中框出的部分 即 数据清洗 gt 特征 标注数据生成 gt 模型学习 gt 模型应用 中的前两个步骤 灰色框中蓝色箭头对应的是离线处理部分 主要工作是 从原始
  • C/C++调用前缀

    今天写线程函数时 发现msdn中对ThreadProc的定义有要求 DWORD WINAPI ThreadProc LPVOID lpParameter 不解为什么要用WINAPI宏定义 查了后发现下面的定义 于是乎需要区别 stdcall
  • 在Google地图中显示行政区边界

    不知道从什么时候开始 在Google地图或是百度地图中用城市或者省名称搜索的时候 你会发现地图上会勾勒出搜索的行政区的轮廓来 这个功能非常人性化 比如在百度地图中搜索 广西 地图显示如下图所示 在Google地图中搜索 桂林 会定位到桂林市
  • LaTex如何设置表格列宽以及居中格式

    用LaTex写论文时 被一个表格困扰好久 不过终于找到解决方法 代码放在这里方便以后查询 begin table h caption 符号说明 centering begin tabular p 3cm lt centering p 7cm
  • 做事变通

    author skatetime 2010 05 21 做事变通 昨天同事找我 说bi系统的有一个递归树形查询的sql非常慢 已经让使用人员无法忍受 sql如下 SELECT SYS CONNECT BY PATH BB FULL NAME
  • ARM体系结构与接口技术:UART总线概念、串口总线的硬件连接及通信协议

    一 总线相关的概念 1 1 串口总线相关的概念 总线 连接多个部件的信息传输线 是各部件共享的传输介质 UART 通用的异步接收器和发送器 串口主要是被用来实现两个设备之间通信的 1 2 串行总线和并行总线 串行通信 指的是同一时刻只能收或
  • 【事件驱动】【数码管识别】(C++多线程实现多幅图像的同步识别)

    一 问题的背景 二 问题的解决方法和思路 三 程序实现 四 遇到的问题 五 后续的工作
  • 刷脸支付方式的改变可谓是变化巨大

    支付方式变迁带来生活方式改变 足不出户就能缴水电费 出门打车 掏出手机扫一扫出租车上的二维码 轻松支付车费 下馆子吃饭 手机上的二维码被收银员扫码枪扫了后金融市场 因为现在的中国人出门不用携带现金 掏出手机扫一扫二维码就能就能完成一笔交易
  • Spring Cloud Config+Bus:实现动态刷新配置文件

    如果需要实现修改远端仓库里的配置文件的信息 对应的配置信息的客户端也能动态的刷新配置信息 而不要重新启动程序 那么需要引入消息中间件 我这里使用的是RabbitMQ 还有微服务和RabbitMQ进行通信的Spring Cloud Bus C
  • 【H5】 两种屏幕宽度大小自适应方式

    H5 两种屏幕宽度大小自适应方式 第一种 由于rem是获取html根属性的字体大小 改变html的字体大小 通过rem设置所以样式的宽高 rem为html的字体大小 通过改变html的字体大小达到适配的效果 remChange 监听屏幕改变
  • 【VQ-VAE代码实战】Neural Discrete Representation Learning

    VQ VAE代码实战 Neural Discrete Representation Learning 0 前言 1 简介 2 Basic Idea Loss 3 代码 Load Data Vector Quantizer Layer Enc
  • 通过js把具有相同属性的对象的值进行合并,并生成新的数组对象的方法。

    通过js把具有相同属性的对象的值进行合并 并生成新的数组对象的方法 在日常开发的时候 我们有时候会遇到这样的需求 要求把具有相同属性名的对象进行合并 如下例子所示