多个字段分组
效果图
var arr = [ { "BDCDYH": "525", "FDZL": "", "LJZH": "21844469", "SHBW": "701房", "SJCS": "1" }, { "BDCDYH": "3663", "FDZL": "", "LJZH": "21844469", "SHBW": "301房", "SJCS": "1" }, { "BDCDYH": "5242452", "FDZL": "", "LJZH": "21844469", "SHBW": "201房", "SJCS": "2" }, { "BDCDYH": "3654", "FDZL": "", "LJZH": "21844499", "SHBW": "702房", "SJCS": "1" }, { "BDCDYH": "63542778775272", "FDZL": "", "LJZH": "2184448", "SHBW": "202房", "SJCS": "2" }, { "BDCDYH": "63542778775272", "FDZL": "", "LJZH": "2184449", "SHBW": "202房", "SJCS": "2" }, { "BDCDYH": "35636421024535425", "FDZL": "", "LJZH": "21844469", "SHBW": "501房", "SJCS": "5" } ] //按属性名筛选 function sort(array, hashname, hash) { return array.filter(function (value, index) { if (value[hashname] == hash) { return value } }) } // 分组 function Trans(data) { //提取SJCS,LJZH索引 var hash_SJCS = []; var hash_LJZH = []; for (var i = 0; i < data.length; i++) { hash_SJCS.push(data[i].SJCS); hash_LJZH.push(data[i].LJZH); } hash_SJCS = Array.from(new Set(hash_SJCS)); hash_LJZH = Array.from(new Set(hash_LJZH)); var result = [] if (hash_SJCS.length != 0 && hash_LJZH.length != 0) { for (var i = 0; i < hash_SJCS.length; i++) { var dict = {} var SJCS_data = [] var Arr2=sort(data, 'SJCS', hash_SJCS[i]) for (var j = 0; j < hash_LJZH.length; j++) { var dict1 = {} var LJZH_data = sort(Arr2, 'LJZH', hash_LJZH[j]) dict1['LJZH'] = hash_LJZH[j] dict1['data'] = LJZH_data if(dict1['data'].length!=0){ SJCS_data.push(dict1) } } dict['SJCS'] = hash_SJCS[i] dict['data'] = SJCS_data result.push(dict) } } return result } console.log(arr) console.log(Trans(arr))