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

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>

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

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值