无法使用Jquery/Javascript按照键值对数组进行分组

无法使用Jquery/Javascript按照键值对数组进行分组,javascript,jquery,Javascript,Jquery,我需要使用Jquery/Javascript根据某个键值对数组值进行分组,但根据我的代码,我无法获得它。我在下面解释我的代码 var dataArr=[ { "login_id":"9937229853", "allocated_to":"FIELD", "zone":"NORTH", "state":"DELHI", "locati

我需要使用Jquery/Javascript根据某个键值对数组值进行分组,但根据我的代码,我无法获得它。我在下面解释我的代码

var dataArr=[
            {
              "login_id":"9937229853",
              "allocated_to":"FIELD",
              "zone":"NORTH",
              "state":"DELHI",
              "location":"NEW DELHI",
              "customer_name":"REET INFOTECH",
              "bank_name_of_customer":"YES BANK",
              "cl_contract_id":"LAI-00016881",
              "lk_loan_account_id":"LK0000015094",
              "front_end_manager_name":"SONAL",
              "area_collection_manager":"ASHIS JENA",
              "installment_date":"",
              "collection_manager":"",
              "coll_cat": "1stcoll",
              "reso_status": "1stres"
            },
            {
              "login_id":"9937229853",
              "allocated_to":"FIELD",
              "zone":"NORTH",
              "state":"DELHI",
              "location":"NEW DELHI",
              "customer_name":"REET",
              "bank_name_of_customer":"Corporate BANK",
              "cl_contract_id":"LAI-00016881",
              "lk_loan_account_id":"LK0000015094",
              "front_end_manager_name":"SONAL",
              "area_collection_manager":"ASHIS JENA",
              "installment_date":"",
              "collection_manager":"",
              "coll_cat": "2ndcoll",
              "reso_status": "2ndres"
            },
            {
              "login_id":"9937229867",
              "allocated_to":"FIELD",
              "zone":"EAST",
              "state":"Odisha",
              "location":"Bhubaneswar",
              "customer_name":"REET",
              "bank_name_of_customer":"PNB BANK",
              "cl_contract_id":"LAI-00016881",
              "lk_loan_account_id":"LK0000015094",
              "front_end_manager_name":"SONAL",
              "area_collection_manager":"ASHIS JENA",
              "installment_date":"",
              "collection_manager":"",
              "coll_cat": "3rdcoll",
              "reso_status": "3rdres"
            },
            {
              "login_id":"9937229867",
              "allocated_to":"FIELD",
              "zone":"EAST",
              "state":"Assam",
              "location":"Gawhati",
              "customer_name":"REET",
              "bank_name_of_customer":"SBI BANK",
              "cl_contract_id":"LAI-00016881",
              "lk_loan_account_id":"LK0000015094",
              "front_end_manager_name":"SONAL",
              "area_collection_manager":"ASHIS JENA",
              "installment_date":"",
              "collection_manager":"",
              "coll_cat": "4thcoll",
              "reso_status": "4thres"
            }
        ]
在这里,我需要根据
区域、状态、位置和登录id对所有json数组进行分组。我的工作代码如下

 groups = [
          ['zone_list', 'zone'],
          ['state_list', 'state'],
          ['location_list', 'location'],
          ['task_list', 'login_id', 'front_end_manager_name', 'area_collection_manager', 'collection_manager'],
          ['loan_accounts_assigned', 'lk_loan_account_id', 'allocated_to', 'cl_contract_id', 'customer_name', 'customer_bank_name'],
          ['feedback_detail', 'coll_cat', 'reso_status']
      ],
      finalGroup = 'task_list',
      result = dataArr.reduce((r, o) => {
          groups.reduce((t, [group, ...keys]) => {
              var temp = (t[group] = t[group] || []).find(p => o[keys[0]] === p[keys[0]]);
              if (!temp) {
                  temp = Object.assign({}, ...keys.map(k => ({ [k]: o[k] })));
                  t[group].push(temp);
              }
              return temp;
          }, r);
          return r;
      }, {});
      console.log(result);
但我的问题是,我可以根据区域、状态和位置对整个值进行分组,但根据
login\u id
无法进行分组。我需要根据
区域、状态、位置和登录id进行分组。请帮我解决这个问题

工作片段

var dataArr=[{“登录id”:“9937229853”,“分配给”:“字段”,“区域”:“北部”,“州”:“德里”,“地点”:“新德里”,“客户名称”:“REET INFOTECH”,“客户的银行名称”:“是的银行”,“合同id”:“LAI-0001681”,“贷款账户id”:“LK0000015094”,“前端经理姓名”:“SONAL”,“区域收款经理”:“阿希斯·耶纳”,“分期付款日期”:“收款人”:“收款人”:“地址”:“新德里”,“客户姓名”:“REET”,“客户银行名称”:“公司银行”,“合同id”:“LAI-00016881”,“lk贷款账户id”:“LK0000015094”,“前端经理姓名”:“SONAL”,“区域收款经理”:“ASHIS JENA”、“分期付款日期”:“收款经理”:“coll_cat”:“2ndcoll”、“reso_status”:“2ndres”;“登录id”:“9937229867”、“分配给”:“字段”、“区域”:“东部”、“州”:“Odisha”、“位置”:“Bhubaneswar”、“客户名称”:“REET”、“银行名称”:“PNB银行”、“cl合同id”:“LAI-6881”、“lk_贷款账户id”:LK0000015094,“前端经理姓名”:“SONAL”,“区域收款经理”:“ASHIS JENA”,“分期付款日期”:“收款经理”:“coll-cat”:“3rdcoll”,“reso-status”:“3rdres”;“{”登录id:“9937229867”,“分配给”:“FIELD”,“zone”:“EAST”,“state”:“Assam”,“location”:“Gawhati”,“customer-name”:“REET”,“bank-name”:“SBI bank”,“cl-contract”“:”LAI-00016881“,”lk\U贷款账户id“:”LK0000015094“,”前端经理“:”SONAL“,”区域收款经理“:”ASHIS JENA“,”分期付款日期“,”收款经理“:”coll\u cat“:”4thcoll“,”reso\u status“:”4thres“,”,
组=['zone_list'、'zone']、['state_list'、'state']、['location_list'、'location']、['task_list'、'login_id'、'front_end_manager_name'、'area_collection_manager'、'collection_manager']、['loan_accounts_assigned'、'lk_loan_account_id'、'assigned_to'、'cl_contract_id'、'customer_name'、'customer_name'、'customer_bank_name'、'客户_bank_name'、'客户_姓名'、'反馈详细信息'、['cat Resou"、',
finalGroup='任务列表',
结果=dataArr.reduce((r,o)=>{
减少((t,[组,…键])=>{
var temp=(t[group]=t[group]| |[])。find(p=>o[keys[0]]==p[keys[0]]);
如果(!temp){
temp=Object.assign({},…keys.map(k=>({[k]:o[k]}));
t[组]。推送(温度);
}
返回温度;
},r);
返回r;
}, {});

控制台日志(结果)如果您必须根据JSON数组中的特定键以简单的方式进行分组,那么我建议使用Javascript实用程序库下划线js或。请参阅下面的示例,该示例可能会解决可读代码的问题

_.groupBy(dataArr,"login_id");
_.groupBy(dataArr,"state");
_.groupBy(dataArr,"zone");
var-dataArr=[
{
“登录id”:“9937229853”,
“分配给”:“字段”,
“区域”:“北部”,
“国家”:“德里”,
“地点”:“新德里”,
“客户名称”:“REET INFOTECH”,
“客户的银行名称”:“是的银行”,
“cl_合同id”:“LAI-00016881”,
“lk_贷款账户id”:“LK0000015094”,
“前端经理姓名”:“SONAL”,
“区域收集管理人”:“ASHIS JENA”,
“分期付款日期”:“,
“集合管理器”:“,
“coll_cat”:“1stcoll”,
“资源状态”:“1个资源”
},
{
“登录id”:“9937229853”,
“分配给”:“字段”,
“区域”:“北部”,
“国家”:“德里”,
“地点”:“新德里”,
“客户名称”:“REET”,
“客户的银行名称”:“公司银行”,
“cl_合同id”:“LAI-00016881”,
“lk_贷款账户id”:“LK0000015094”,
“前端经理姓名”:“SONAL”,
“区域收集管理人”:“ASHIS JENA”,
“分期付款日期”:“,
“集合管理器”:“,
“coll_猫”:“第二个洞”,
“资源状态”:“2个资源”
},
{
“登录id”:“9937229867”,
“分配给”:“字段”,
“区域”:“东部”,
“国家”:“奥迪沙”,
“地点”:“布巴内斯瓦尔”,
“客户名称”:“REET”,
“客户的银行名称”:“PNB银行”,
“cl_合同id”:“LAI-00016881”,
“lk_贷款账户id”:“LK0000015094”,
“前端经理姓名”:“SONAL”,
“区域收集管理人”:“ASHIS JENA”,
“分期付款日期”:“,
“集合管理器”:“,
“coll_cat”:“第三代coll”,
“资源状态”:“第三方”
},
{
“登录id”:“9937229867”,
“分配给”:“字段”,
“区域”:“东部”,
“州”:“阿萨姆”,
“地点”:“加瓦蒂”,
“客户名称”:“REET”,
“客户银行名称”:“SBI银行”,
“cl_合同id”:“LAI-00016881”,
“lk_贷款账户id”:“LK0000015094”,
“前端经理姓名”:“SONAL”,
“区域收集管理人”:“ASHIS JENA”,
“分期付款日期”:“,
“集合管理器”:“,
“coll_猫”:“4thcoll”,
“决议状态”:“4三”
}
];
//用法uu.groupBy(jsonArrayOfObjects,“key”);
var groupByLoginId=u.groupBy(dataArr,“login_id”);
有限公司
var temp = (t[group] = t[group] || []).find(p => o[keys[0]] === p[keys[0]]);
var temp = (t[group] = t[group] || []).find(p => keys.every(key => o[key] === p[key]));