zoukankan      html  css  js  c++  java
  • 数组数据处理--按某个key筛选数组,value相同的合并为一个数组

    有时候,某个请求返回的数据是很杂乱的,需要按照一些规则重新排列组合。

    例:这样的数据:

    var list=[
        {"companyId":1,"companyName":"公司一","name":"张春"},
        {"companyId":1,"companyName":"公司一","name":"王夏"},
        {"companyId":2,"companyName":"公司二","name":"李秋"},
        {"companyId":2,"companyName":"公司二","name":"赵冬"},
        {"companyId":3,"companyName":"公司三","name":"刘季"}                
    ]

    现在想按照公司来处理,把相同id的公司中的人员放在一个数组中,最后的结果是,有多少个公司,就返回多少个数组。

    可以这样操作:

    var list=[
        {"companyId":1,"companyName":"公司一","name":"张春"},
        {"companyId":1,"companyName":"公司一","name":"王夏"},
        {"companyId":2,"companyName":"公司二","name":"李秋"},
        {"companyId":2,"companyName":"公司二","name":"赵冬"},
        {"companyId":3,"companyName":"公司三","name":"刘季"}                
    ]            
    
    var listNew = [];
    
    list.forEach(function(el){
        for(var i=0;i<listNew.length;i++){
            if(listNew[i].companyId == el.companyId){
                listNew[i].people.push({
                    name: el.name
                });
                return;
            }
        }                    
        listNew.push({
            companyId: el.companyId,
            companyName: el.companyName,
            people: [{
                name: el.name                    
            }]
        });    
    });
                            
    console.log(listNew);

    结果为:

    这样的结果符合要求。

  • 相关阅读:
    【English】20190307
    【Teradata】四舍五入函数
    【Teradata】配置PE和AMP(congfig和reconfig工具、vprocmanager)
    【English】20190306
    【Teradata】数据库初始化(sysinit和dip工具)
    【Teradata】日期类型转换
    Optional常用操作
    Stream学习笔记
    拦截Restful API的三种方式
    maven之可执行jar包
  • 原文地址:https://www.cnblogs.com/hzhjxx/p/12851155.html
Copyright © 2011-2022 走看看