JS将数组相同的元素进行分类

2023-10-27

js实现将数组中相同元素进行分类,思路是先将数组去重,这里采用对象的方式进行去重,然后将相同的元素重新放入一个数组内,实例如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
    //普通数组
        var arr = [1,2,3,3,2,1,1,2,3];
        var obj = {};
        arr.forEach(item=>{
            obj[item] = item;
        });//利用对象去重
        console.log(obj);
        for(var o in obj){
            obj[o] = []
        }
        console.log(obj);
		//上面两步可以简写为下面一个步骤
		/*arr.forEach((item)=>{
				obj[item] = [];
		})*/
		//将数组中相同的元素放入同一个数组
        arr.forEach(item=>{
            console.log(item);
            for(var o in obj){
                if(item==o){
                obj[o].push(item);
            }
            }  
        });
        console.log(obj);
		//如果是比较复杂的数据,下面以数组对象为例,subId相同的分为一组
        var datas = JSON.parse(JSON.stringify({"datas": [{
					"pId": "2211380240034753",
					"subId": "-7629697887759678641",
					"logType": "1",
					"date": "2021-07-02"
				}, {
					"pId": "2211380240034753",
					"subId": "-7629697887759678641",
					"logType": "1",
					"date": "2021-07-02"
				}, {
					"pId": "2211380240034753",
					"subId": "278923639442458524",
					"logType": "1",
					"date": "2021-07-02"
				}, {
					"pId": "2211380240034753",
					"subId": "278923639442458524",
					"logType": "1",
					"date": "2021-07-02"
				}, {
					"pId": "2211380240034753",
					"subId": "278923639442458524",
					"logType": "1",
					"date": "2021-07-02"
				}, {
					"pId": "2211380240034753",
					"subId": "-7629697887759678641",
					"logType": "1",
					"date": "2021-07-02"
                }]}));
                console.log(datas);

        var obj1 = {};
        
        datas.datas.forEach(item=>{
            obj1[item.subId] = [];
        });
        console.log(obj1);
        datas.datas.forEach(item=>{
            for(let o in obj1){
                if(item.subId==o){
                    obj1[o].push(item);
                }
            }
        });
        console.log(obj1);
        var arrObj = [];
        let i=0;
        for(let o in obj1){
            arrObj[i] = {};
            arrObj[i].name = '文本';
            arrObj[i].display = 'haha';
            arrObj[i].newValue = '文本1';
            arrObj[i].oldValue = '文本';
            arrObj[i].children = obj1[o];
            i++;
        }

        console.log(arrObj);
    </script>
</head>
<body>
    
</body>
</html>

以上代码运行的最终结果如下
在这里插入图片描述

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

JS将数组相同的元素进行分类 的相关文章

  • STViT-R 代码阅读记录

    目录 一 SwinTransformer 1 原理 2 代码 二 STViT R 1 中心思想 2 代码与原文 本次不做具体的训练 只是看代码 所以只需搭建它的网络 执行一次前向传播即可 一 SwinTransformer 1 原理 主要思

随机推荐

  • H5C3部分面试题汇总

    1 HTML和HTML5 CSS和CSS3相比 有什么变化 HTML5中新增的内容有 自定义属性 data id 语义化更好的内容标签 header nav footer aside article section 音频 视频标签 audi
  • 复习之linux系统中的软件管理

    一 linux系统中软件包 1 软件包的类型 注意在rhel8中只能使用绿色软件 源码编译软件和rpm软件 类型 支持的条件 DEB UBlinux DEBlinux 用不了 RPM redhat centOS fadora bz2 gz
  • 栈破坏的分析

    在程序运行中 栈主要用来保存局部变量 函数参数 函数调用的返回地址以及栈底 以x86为例 与栈关系比较大的几个寄存器主要是 ebp 基址指针寄存器 extended base pointer 其内存放着一个指针 该指针永远指向系统栈最上面一
  • jvm-04运行时数据区(方法区)

    1 堆 栈 方法区的交互关系 运行时数据区结构图 堆 栈 方法区的交互关系 2 方法区的理解 Java虚拟机规范 中明确说明 尽管所有的方法区在逻辑上属于堆的一部分 但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩 但对于HotSpo
  • QSPI协议详解(二)

    1 QSPI协议简介 QSPI是Queued SPI的简写 是Motorola公司推出的SPI接口的扩展 比SPI应用更加广泛 在SPI协议的基础上 Motorola公司对其功能进行了增强 增加了队列传输机制 推出了队列串行外围接口协议 即
  • Linux和Windows中下载FFmpeg

    Linux和Windows中下载FFmpeg 注意 在Linux下下载FFmpeg 必须要让 usr local ffmpeg中的目录为空 否则无法生成新的版本内容 我就是了 1 Linux下 1 打开官网 点击Download 然后点击L
  • coderforces round 894(div.3)

    Problem A Codeforces AC代码 include
  • 【跑实验03】如何可视化GT边界框,如何选择边界框内部的边界框,如何可视化GT框和预测框,如何定义IoU阈值下的不同边界框?

    文章目录 一 如何可视化GT边界框 二 GT框和预测框的可视化 三 根据IoU阈值来选择 一 如何可视化GT边界框 from PIL import Image ImageDraw def draw bboxes image bboxes c
  • Spring实现控制反转(IOC)的三种方式(零)——理解IOC

    学过Spring的应该都知道Spring的IOC和AOP 然而我刚接触Spring不久 学习了IOC 发现掌握的不是很好 停留在概念上 今天就以例子来总结一下Spring的IOC 也希望各位大大能够指点迷津 IOC 也就是控制反转 创建对象
  • 函数重载与函数模板

    键盘输入10个数 可能为整形 浮点型 双精度型及其字符类型 分别利用函数重载和函数模板 求出其中的最大值和最小值 函数重载 include
  • 连接数据库报错 -- Access denied for user ‘‘@‘192.168.121.1‘ (using password: NO)

    问题 用idea配置好数据库配置文件application yml 在连接虚拟机数据库时 控制台报错 Access denied for user 192 168 121 1 using password NO 解决方法 1 密码配置出错
  • Win10及Win11安装及使用Wsl2 Linux子系统

    一 安装Wsl2 环境要求 必须运行 Windows 10 版本 2004 及更高版本 内部版本 19041 及更高版本 或 Windows 11 WSL2 是 WSL 1 的升级版 带来的主要优势 提高文件系统性能 支持完全的系统调用兼容
  • 你不知道的javascript之this的全面解析之绑定规则(一)

    1 1 默认绑定 首先介绍的是函数调用类型 独立函数调用 在没有其他应用下的默认规则 首先看以下代码 function foo console log this a var a 2 foo 2 我们可以看到调用foo 时 this a被解析
  • java对数据库中Date类型的处理

    java对数据库中Date类型的处理 想必在日常的敲代码生活总 用java操作数据库中的Date类型是不同于其他的 因为Date在导包的时候就分为 import java sql Date import java util Date 这两种
  • nginx 配置 ssl

    1 1 Nginx如果未开启SSL模块 配置Https时提示错误 原因也很简单 nginx缺少http ssl module模块 编译安装的时候带上 with http ssl module配置就行了 但是现在的情况是我的nginx已经安装
  • Seq2Seq 模型知识总结

    Seq2Seq 模型知识总结 目录 Seq2Seq 模型知识总结 1 模型的提出 2 RNN 结构及使用 2 1 N vs N 2 2 1 vs N 2 3 N vs 1 3 Seq2Seq 模型 3 1 Seq2Seq 结构 3 2 编码
  • 你应该掌握的七种回归技术

    摘要 本文解释了回归分析及其优势 重点总结了应该掌握的线性回归 逻辑回归 多项式回归 逐步回归 岭回归 套索回归 ElasticNet回归等七种最常用的回归技术及其关键要素 最后介绍了选择正确的回归模型的关键因素 编者按 回归分析是建模和分
  • Java大数字运算(BigInteger类和BigDecimal类)

    Java中的超大数BIgInteger和BigDecimal 在我们处理大位数运算的时候 我们经常用的int和long类型的数已经不能够满足我们的运算了 那么这个时候就需要用到一个超大数来运算 这个时候我们会用到java math BigI
  • javaweb项目中完成数据的增删改查操作((maven,mybaits,tomcat,servlet,jsp包含 MVC模式 和 三层架构 ))

    目录 需求 完成品牌数据的增删改查操作 1 环境准备 1 1 创建工程模块 引入坐标 1 2创建三层架构的包结构 1 3创建数据库表 tb brand 1 4 创建实体类Brand 1 5 准备mybatis环境 2 查询所有 2 1编写B
  • JS将数组相同的元素进行分类

    js实现将数组中相同元素进行分类 思路是先将数组去重 这里采用对象的方式进行去重 然后将相同的元素重新放入一个数组内 实例如下