I want to sort a json multilevel!! First sort by Sharia -> then by Volume[0] -> then by marketcap[0]
Non Sorted:
[
{
"Name": "Hcl",
"sharia": true,
"Volume": [
25000,
"moderate"
],
"marketcap": [
5000,
"large"
]
},
{
"Name": "rado",
"sharia": false,
"Volume": [
50000,
"high"
],
"marketcap": [
5000,
"small"
]
},
{
"Name": "ssinc ",
"sharia": false,
"Volume": [
200,
"low"
],
"marketcap": [
5000,
"large"
]
},
{
"Name": "sureshot",
"sharia": false,
"Volume": [
20000,
"moderate"
],
"marketcap": [
5000,
"small"
]
},
{
"Name": "Infosys",
"sharia": true,
"Volume": [
50000,
"high"
],
"marketcap": [
6000,
"large"
]
},
{
"Name": "orchid",
"sharia": true,
"Volume": [
200,
"low"
],
"marketcap": [
6000,
"Large"
]
},
{
"Name": "hero honda",
"sharia": true,
"Volume": [
150,
"low"
],
"marketcap": [
400,
"medium "
]
},
{
"Name": "bioffoz",
"sharia": false,
"Volume": [
40000,
"moderate"
],
"marketcap": [
5000,
"large"
]
}
]
As of now i am sorting once using the below function:
var sort_by = function(field, reverse, primer){
var key = function (x) {return primer ? primer(x[field]) : x[field]};
return function (a,b) {
var A = key(a), B = key(b);
return (A < B ? -1 : (A > B ? 1 : 0)) * [1,-1][+!!reverse];
}
}
For sorting A - Z
company.sort(sort_by('Name', false, function(a){return a.toUpperCase()}));
For sorting Boolean:
company.sort(sort_by('sharia', true, function(a){return Boolean(a)}));
For sorting High to low:
company.sort(sort_by('sharia', true, parseint));
Sort By sharia(will look like this):
[
{
"Name": "Hcl",
"sharia": true,
"Volume": [
25000,
"moderate"
],
"marketcap": [
5000,
"large"
]
},
{
"Name": "orchid",
"sharia": true,
"Volume": [
200,
"low"
],
"marketcap": [
6000,
"Large"
]
},
{
"Name": "hero honda",
"sharia": true,
"Volume": [
150,
"low"
],
"marketcap": [
400,
"medium "
]
},
{
"Name": "Infosys",
"sharia": true,
"Volume": [
50000,
"high"
],
"marketcap": [
6000,
"large"
]
},
{
"Name": "ssinc ",
"sharia": false,
"Volume": [
200,
"low"
],
"marketcap": [
5000,
"large"
]
},
{
"Name": "sureshot",
"sharia": false,
"Volume": [
20000,
"moderate"
],
"marketcap": [
5000,
"small"
]
},
{
"Name": "rado",
"sharia": false,
"Volume": [
50000,
"high"
],
"marketcap": [
5000,
"small"
]
},
{
"Name": "bioffoz",
"sharia": false,
"Volume": [
40000,
"moderate"
],
"marketcap": [
5000,
"large"
]
}
]
then sort by volume
[
{
"Name": "Infosys",
"sharia": true,
"Volume": [
50000,
"high"
],
"marketcap": [
6000,
"large"
]
},
{
"Name": "Hcl",
"sharia": true,
"Volume": [
25000,
"moderate"
],
"marketcap": [
5000,
"large"
]
},
{
"Name": "orchid",
"sharia": true,
"Volume": [
200,
"low"
],
"marketcap": [
6000,
"Large"
]
},
{
"Name": "hero honda",
"sharia": true,
"Volume": [
150,
"low"
],
"marketcap": [
400,
"medium "
]
},
{
"Name": "rado",
"sharia": false,
"Volume": [
50000,
"high"
],
"marketcap": [
5000,
"small"
]
},
{
"Name": "bioffoz",
"sharia": false,
"Volume": [
40000,
"moderate"
],
"marketcap": [
5000,
"large"
]
},
{
"Name": "sureshot",
"sharia": false,
"Volume": [
20000,
"moderate"
],
"marketcap": [
5000,
"small"
]
},
{
"Name": "ssinc ",
"sharia": false,
"Volume": [
200,
"low"
],
"marketcap": [
5000,
"large"
]
}
]
All Sorted:
[
{
"Name": "Infosys",
"sharia": true,
"Volume": [
50000,
"high"
],
"marketcap": [
6000,
"large"
]
},
{
"Name": "Hcl",
"sharia": true,
"Volume": [
25000,
"moderate"
],
"marketcap": [
5000,
"large"
]
},
{
"Name": "orchid",
"sharia": true,
"Volume": [
200,
"low"
],
"marketcap": [
6000,
"Large"
]
},
{
"Name": "hero honda",
"sharia": true,
"Volume": [
150,
"low"
],
"marketcap": [
400,
"medium "
]
},
{
"Name": "rado",
"sharia": false,
"Volume": [
50000,
"high"
],
"marketcap": [
5000,
"small"
]
},
{
"Name": "bioffoz",
"sharia": false,
"Volume": [
40000,
"moderate"
],
"marketcap": [
5000,
"large"
]
},
{
"Name": "sureshot",
"sharia": false,
"Volume": [
20000,
"moderate"
],
"marketcap": [
5000,
"small"
]
},
{
"Name": "ssinc ",
"sharia": false,
"Volume": [
200,
"low"
],
"marketcap": [
5000,
"large"
]
}
]