zoukankan      html  css  js  c++  java
  • js对象数组(JSON) 根据某个共同字段 分组

    转载:https://www.cnblogs.com/rysinal/p/5834446.html

    希望的是将下面的对象数组:

    [
        {"id":"1001","name":"值1","value":"111"},
        {"id":"1001","name":"值1","value":"11111"},
        {"id":"1002","name":"值2","value":"25462"},
        {"id":"1002","name":"值2","value":"23131"},
        {"id":"1002","name":"值2","value":"2315432"},
        {"id":"1003","name":"值3","value":"333333"}
    ]
    

     根据相同id字段分组,转换成下面这种形式:

    [
        {
            "id": "1001",
            "name": "值1",
            "data": [
                {"id": "1001", "name": "值1", "value": "111"},
                { "id": "1001", "name": "值1", "value": "11111"}
            ]
        },
        {
            "id": "1002",
            "name": "值2",
            "data": [
                { "id": "1002",  "name": "值2", "value": "25462" },
                { "id": "1002", "name": "值2", "value": "23131"},
                {"id": "1002", "name": "值2","value": "2315432" }
            ]
        },
        {
            "id": "1003",
            "name": "值3",
            "data": [
                {"id": "1003", "name": "值3", "value": "333333" }
            ]
        }
    ]
    

     做法:

    var arr = [
        {"id":"1001","name":"值1","value":"111"},
        {"id":"1001","name":"值1","value":"11111"},
        {"id":"1002","name":"值2","value":"25462"},
        {"id":"1002","name":"值2","value":"23131"},
        {"id":"1002","name":"值2","value":"2315432"},
        {"id":"1003","name":"值3","value":"333333"}
    ];
    
    var map = {},
        dest = [];
    for(var i = 0; i < arr.length; i++){
        var ai = arr[i];
        if(!map[ai.id]){
            dest.push({
                id: ai.id,
                name: ai.name,
                data: [ai]
            });
            map[ai.id] = ai;
        }else{
            for(var j = 0; j < dest.length; j++){
                var dj = dest[j];
                if(dj.id == ai.id){
                    dj.data.push(ai);
                    break;
                }
            }
        }
    }
    
    console.log(dest);
    

     

  • 相关阅读:
    list(range(10))解释
    numpy.random.normal函数
    适用于Python扩展程序包的非官方Windows二进制文件
    Linux--vi/vim编辑器常用命令
    Centos Mirrors List (centos7)
    windows--redis安装
    Celery 3.x 升级至 celery 4.x(转)
    windows/linux(centos7)安装SVN
    远程获取--snmp模块(python)/snmp-cmds,easysnmp
    FileZilla客户端(OS)连接Linux
  • 原文地址:https://www.cnblogs.com/wangshengli520/p/10670885.html
Copyright © 2011-2022 走看看