1 //数组扩展:根据key重新分组 2 //field:按什么字段分组 3 Array.prototype.GroupByKey = function ( field ) 4 { 5 var originalArr = this 6 let tempArr = [] 7 let resultData = [] 8 for ( let i = 0; i < originalArr.length; i++ ) 9 { 10 if ( tempArr.indexOf( originalArr[ i ][ field ] ) === -1 ) 11 { 12 resultData.push( { 13 [ field ]: originalArr[ i ][ field ], 14 data: [ originalArr[ i ] ] 15 } ) 16 tempArr.push( originalArr[ i ][ field ] ) 17 } else 18 { 19 for ( let j = 0; j < resultData.length; j++ ) 20 { 21 if ( resultData[ j ][ field ] == originalArr[ i ][ field ] ) 22 { 23 resultData[ j ].data.push( originalArr[ i ] ) 24 break 25 } 26 } 27 } 28 } 29 return resultData // 最终输出 30 }
使用例子:
var scoreArr = [ { name: "小明", subject: "语文", score: 88 }, { name: "小明", subject: "数学", score: 58 }, { name: "小红", subject: "数学", score: 85 }, { name: "小红", subject: "语文", score: 99 }, ] var resultArr = scoreArr.GroupByKey( "name" )
得到结果:
[ { name: "小明", data: [ { name: "小明", subject: "语文", score: 88 }, { name: "小明", subject: "数学", score: 58 } ] }, { name: "小红", data: [ { name: "小红", subject: "数学", score: 85 }, { name: "小红", subject: "语文", score: 99 } ] } ]
标签:originalArr,name,resultData,Javascript,field,score,分组,key,subject From: https://www.cnblogs.com/Sunlimi/p/17564882.html