I have an array of objects Like :
var newArray = [
{value : "P1"},
{value : "P2/S2"},
{value : "P2"},
{value : "P1"},
{value : "P1/S2"},
{value : "P1/S3"},
{value : "P2/S1"},
{value : "P1/S3"},
{value : "P2/S2"},
{value : "P1"},
{value : "P2"},
{value : "P3"}
];
function compare( a, b ) {
if ( a.value < b.value ){
return -1;
}
if ( a.value > b.value ){
return 1;
}
return 0;
}
newArray.sort( compare );
console.log(newArray);
[{"value":"P1"},{"value":"P1"},{"value":"P1"},{"value":"P1/S2"},{"value":"P1/S3"},{"value":"P1/S3"},{"value":"P2"},{"value":"P2"},{"value":"P2/S1"},{"value":"P2/S2"},{"value":"P2/S2"},{"value":"P3"}]
But here i have a rearrangement in sorting if there is no S value after P value. P value should be low priority if there is no S value. I am expecting a result like this :
[{"value":"P1/S2"},{"value":"P1/S3"},{"value":"P1/S3"},{"value":"P1"},{"value":"P1"},{"value":"P1"},{"value":"P2/S1"},{"value":"P2/S2"},{"value":"P2/S2"},{"value":"P2"},{"value":"P2"},{"value":"P3"}]