1
+ <!DOCTYPE html>
2
+ < html >
3
+ < head >
4
+ < title > Object Array Grouping</ title >
5
+ </ head >
6
+ < body >
7
+ < h2 > Object Array Grouping</ h2 >
8
+ < div id ="result "> </ div >
9
+ < script >
10
+ let ObjArr = [
11
+ { EmpId : 1 , EmpName : 'Sam' , Dept : 'Engg' , Salary : 1000 } ,
12
+ { EmpId : 2 , EmpName : 'Smith' , Dept : 'HR' , Salary : 2000 } ,
13
+ { EmpId : 3 , EmpName : 'Denis' , Dept : 'Engg' , Salary : 4000 } ,
14
+ { EmpId : 4 , EmpName : 'Danny' , Dept : 'IT' , Salary : 3000 } ,
15
+ { EmpId : 5 , EmpName : 'David' , Dept : 'HR' , Salary : 4000 } ,
16
+ { EmpId : 6 , EmpName : 'John' , Dept : 'IT' , Salary : 2000 } ,
17
+ ] ;
18
+ var array_group_by = ( records , key ) => {
19
+ Arr = [ ] ;
20
+ let keyArr = [ ...new Set ( records . map ( ele => ele [ key ] ) ) ] ;
21
+ keyArr . forEach ( each => {
22
+ const createArr = ObjArr . filter ( ele => ele [ key ] === each ) ;
23
+ Arr . push ( { gorupname : each , goupvalue : createArr } ) ;
24
+ } ) ;
25
+ return Arr ;
26
+ }
27
+
28
+ // Group by Dept
29
+ groupArr = array_group_by ( ObjArr , 'Dept' ) ;
30
+ console . log ( 'Group by Dept -----------------------------' ) ;
31
+ console . log ( groupArr ) ;
32
+
33
+ resultDiv = document . getElementById ( 'result' ) ;
34
+ let data = "" ;
35
+ data += "<table border = '1'>" ;
36
+ for ( let i = 0 ; i < groupArr . length ; i ++ ) {
37
+ data += '<tr><th colspan="4">' + groupArr [ i ] . gorupname + '</th></tr>' ;
38
+ let objKeys = Object . keys ( groupArr [ i ] . goupvalue [ 0 ] ) ;
39
+ data += '<tr>' ;
40
+ for ( let k = 0 ; k < objKeys . length ; k ++ ) {
41
+ data += '<th>' + objKeys [ k ] + '</th>' ;
42
+ }
43
+ data += '</tr>' ;
44
+ for ( let j = 0 ; j < groupArr [ i ] . goupvalue . length ; j ++ ) {
45
+ data += '<tr>' ;
46
+ for ( let k = 0 ; k < objKeys . length ; k ++ ) {
47
+ data += '<td>' + groupArr [ i ] . goupvalue [ j ] [ objKeys [ k ] ] + '</td>' ;
48
+ }
49
+ data += '</tr>' ;
50
+ }
51
+ }
52
+ data . innerHTML += '</table>' ;
53
+ resultDiv . innerHTML = data ;
54
+ </ script >
55
+ </ body >
56
+ </ html >
0 commit comments