I have an array in following order
[
{
"source": 0,
"target": 1,
"value": 22
},
{
"source": 1,
"target": 2,
"value": 22
},
{
"source": 0,
"target": 1,
"value": 19
},
{
"source": 1,
"target": 3,
"value": 19
},
{
"source": 0,
"target": 1,
"value": 12
},
{
"source": 1,
"target": 4,
"value": 12
},
{
"source": 0,
"target": 1,
"value": 3.230000000000002
},
{
"source": 1,
"target": 5,
"value": 3.230000000000002
},
{
"source": 0,
"target": 6,
"value": 109
},
{
"source": 6,
"target": 7,
"value": 109
},
{
"source": 0,
"target": 6,
"value": 25
},
{
"source": 6,
"target": 8,
"value": 25
},
{
"source": 0,
"target": 6,
"value": 20
},
{
"source": 6,
"target": 3,
"value": 20
},
{
"source": 0,
"target": 6,
"value": 17
},
{
"source": 6,
"target": 9,
"value": 17
},
{
"source": 0,
"target": 6,
"value": 13
},
{
"source": 6,
"target": 10,
"value": 13
},
{
"source": 0,
"target": 6,
"value": 11
},
{
"source": 6,
"target": 11,
"value": 11
},
{
"source": 0,
"target": 6,
"value": 7
},
{
"source": 6,
"target": 12,
"value": 7
},
{
"source": 0,
"target": 6,
"value": 7
},
{
"source": 6,
"target": 13,
"value": 7
},
{
"source": 0,
"target": 6,
"value": 6
},
{
"source": 6,
"target": 14,
"value": 6
},
{
"source": 0,
"target": 6,
"value": 4
},
{
"source": 6,
"target": 15,
"value": 4
},
{
"source": 0,
"target": 6,
"value": 2
},
{
"source": 6,
"target": 4,
"value": 2
}
]
I need to sort it in following order
[
{
"source": 0,
"target": 1,
"value": 3.230000000000002
},
{
"source": 1,
"target": 5,
"value": 3.230000000000002
},
{
"source": 0,
"target": 1,
"value": 12
},
{
"source": 1,
"target": 4,
"value": 12
},
{
"source": 0,
"target": 1,
"value": 19
},
{
"source": 1,
"target": 3,
"value": 19
},
{
"source": 0,
"target": 1,
"value": 22
},
{
"source": 1,
"target": 2,
"value": 22
},
{
"source": 0,
"target": 6,
"value": 2
},
{
"source": 6,
"target": 4,
"value": 2
},
{
"source": 0,
"target": 6,
"value": 4
},
{
"source": 6,
"target": 15,
"value": 4
},
{
"source": 0,
"target": 6,
"value": 6
},
{
"source": 6,
"target": 14,
"value": 6
},
{
"source": 0,
"target": 6,
"value": 7
},
{
"source": 6,
"target": 12,
"value": 7
},
{
"source": 0,
"target": 6,
"value": 7
},
{
"source": 6,
"target": 13,
"value": 7
},
{
"source": 0,
"target": 6,
"value": 11
},
{
"source": 6,
"target": 11,
"value": 11
},
{
"source": 0,
"target": 6,
"value": 13
},
{
"source": 6,
"target": 10,
"value": 13
},
{
"source": 0,
"target": 6,
"value": 17
},
{
"source": 6,
"target": 9,
"value": 17
},
{
"source": 0,
"target": 6,
"value": 20
},
{
"source": 6,
"target": 3,
"value": 20
},
{
"source": 0,
"target": 6,
"value": 25
},
{
"source": 6,
"target": 8,
"value": 25
},
{
"source": 0,
"target": 6,
"value": 109
},
{
"source": 6,
"target": 7,
"value": 109
}
]
So far I have tried below, first sort on base of source,target and value, now I don't know how to sort in second step to get desired out. Any help/suggestion will be appreciated.
var data = [{
"source": 0,
"target": 1,
"value": 22
},
{
"source": 1,
"target": 2,
"value": 22
},
{
"source": 0,
"target": 1,
"value": 19
},
{
"source": 1,
"target": 3,
"value": 19
},
{
"source": 0,
"target": 1,
"value": 12
},
{
"source": 1,
"target": 4,
"value": 12
},
{
"source": 0,
"target": 1,
"value": 3.230000000000002
},
{
"source": 1,
"target": 5,
"value": 3.230000000000002
},
{
"source": 0,
"target": 6,
"value": 109
},
{
"source": 6,
"target": 7,
"value": 109
},
{
"source": 0,
"target": 6,
"value": 25
},
{
"source": 6,
"target": 8,
"value": 25
},
{
"source": 0,
"target": 6,
"value": 20
},
{
"source": 6,
"target": 3,
"value": 20
},
{
"source": 0,
"target": 6,
"value": 17
},
{
"source": 6,
"target": 9,
"value": 17
},
{
"source": 0,
"target": 6,
"value": 13
},
{
"source": 6,
"target": 10,
"value": 13
},
{
"source": 0,
"target": 6,
"value": 11
},
{
"source": 6,
"target": 11,
"value": 11
},
{
"source": 0,
"target": 6,
"value": 7
},
{
"source": 6,
"target": 12,
"value": 7
},
{
"source": 0,
"target": 6,
"value": 7
},
{
"source": 6,
"target": 13,
"value": 7
},
{
"source": 0,
"target": 6,
"value": 6
},
{
"source": 6,
"target": 14,
"value": 6
},
{
"source": 0,
"target": 6,
"value": 4
},
{
"source": 6,
"target": 15,
"value": 4
},
{
"source": 0,
"target": 6,
"value": 2
},
{
"source": 6,
"target": 4,
"value": 2
}
];
data.sort(function(a, b) {
return a.source - b.source || a.target - b.target || a.value - b.value;
});
console.log(JSON.stringify(data));
UpDate 1
There is a relationship b/w source and target. Sorted array should be in the following sequence
smallest element named "A" based on source, target, value
source = smallest source
target = smallest target
value = smallest value
all the elements who's
source = element A target
target =
Value = element A value
..................
Next smaller element named "B" based on source, target, value
source = smaller source
target = smaller target
value = smaller value
all the elements who's
source = element B target
target =
Value = element B value
...................
Next small element named "C" based on source, target, value
source = small source
target = small target
value = small value
all the elements who's
source = element C target
target =
Value = element C value
so on and so forth.