-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGroupJSONArray.js
More file actions
36 lines (32 loc) · 1.11 KB
/
GroupJSONArray.js
File metadata and controls
36 lines (32 loc) · 1.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//Takes an array of JSON and groups objects in an array based on the head key.
//Data is collected in the values key.
function convertJSONArray2HeaderArray(arr,head,values){
var headerArray = arr.map( function(item) {return item[this];},String(head));
headerArray = headerArray.filter( function( item, index, inputArray ) {
return inputArray.indexOf(item) == index;
});
var headerArray = headerArray.map( function(item) {
var newObject = new Object();
newObject[String(head)]=item;
newObject[String(values)]=[];
return newObject;
});
for(var i =0;i<arr.length;i++){
var keyname = arr[i][String(head)];
for(var j=0;j<headerArray.length;j++){
if(headerArray[j][String(head)]==keyname){
break;
}
}
headerArray[j][String(values)].push(arr[i]);
}
return headerArray;
}
//Reverts an array with header to a simple JSON array. Data is held in the values key.
function convertHeaderArray2JSONArray(headerArray,values){
var JSONArray = [];
headerArray.forEach(function(item){
JSONArray = JSONArray.concat(item[String(values)]);
});
return JSONArray;
}