I have an object. I need to sort it by TranType Property.
The Trantype are like CS+,CS-,RS+,RS-, OPO, OPI, Security in, Security out.
I need to sort it by CS+,CS-,RS+,RS-, OPO, OPI, Security in, Security out
Example:
[
{
'TranType':'CS+',
'Name': 'Kumar'
},
{
'TranType':'RS+',
'Name': 'Lak'
},
{
'TranType':'CS+',
'Name': 'Cnk'
},
{
'TranType':'CS-',
'Name': 'Pro'
},
{
'TranType':'CS-',
'Name': 'Lhj'
},
{
'TranType':'RS-',
'Name': 'Speed'
},
{
'TranType':'OPI',
'Name': 'Neck'
},
{
'TranType':'OPO',
'Name': 'Dok'
},
{
'TranType':'Security In',
'Name': 'Kol'
},
{
'TranType':'Security out',
'Name': 'Klp'
},
{
'TranType':'OPI',
'Name': 'Tpi'
},
{
'TranType':'RS+',
'Name': 'Alo'
},
{
'TranType':'OPO',
'Name': 'Tpp'
},
{
'TranType':'Security In',
'Name': 'Jkl'
},
{
'TranType':'RS-',
'Name': 'Aoi'
},
{
'TranType':'Security out',
'Name': 'Nko'
}
]
I need to sort it as below one.
Here I need to have the trantyoe of ( CS+, OPI, RS+, Security In ) are first priority. And the ( CS-, RS-, OPO, Security out) are second priority.
[
{
'TranType':'CS+',
'Name': 'Kumar'
},
{
'TranType':'CS+',
'Name': 'Cnk'
},
{
'TranType':'OPI',
'Name': 'Neck'
},
{
'TranType':'OPI',
'Name': 'Tpi'
},
{
'TranType':'RS+',
'Name': 'Lak'
},
{
'TranType':'RS+',
'Name': 'Alo'
},
{
'TranType':'Security In',
'Name': 'Kol'
},
{
'TranType':'Security In',
'Name': 'Jkl'
},
{
'TranType':'CS-',
'Name': 'Pro'
},
{
'TranType':'CS-',
'Name': 'Lhj'
},
{
'TranType':'RS-',
'Name': 'Speed'
},
{
'TranType':'RS-',
'Name': 'Aoi'
},
{
'TranType':'OPO',
'Name': 'Dok'
},
{
'TranType':'OPO',
'Name': 'Tpp'
},
{
'TranType':'Security out',
'Name': 'Klp'
},
{
'TranType':'Security out',
'Name': 'Nko'
}
]
Please help me to get the output as expected.
The easiest and most straightforward approach is to make use of an object as lookup for TranType precedence values ...
const tranTypePrecedences = {
'CS+': 1,
'OPI': 2,
'RS+': 3,
'Security In': 4,
'CS-': 5,
'RS-': 6,
'OPO': 7,
'Security out': 8,
};
console.log(
[{
'TranType':'CS+',
'Name': 'Kumar'
}, {
'TranType':'RS+',
'Name': 'Lak'
}, {
'TranType':'CS+',
'Name': 'Cnk'
}, {
'TranType':'CS-',
'Name': 'Pro'
}, {
'TranType':'CS-',
'Name': 'Lhj'
}, {
'TranType':'RS-',
'Name': 'Speed'
}, {
'TranType':'OPI',
'Name': 'Neck'
}, {
'TranType':'OPO',
'Name': 'Dok'
}, {
'TranType':'Security In',
'Name': 'Kol'
}, {
'TranType':'Security out',
'Name': 'Klp'
}, {
'TranType':'OPI',
'Name': 'Tpi'
}, {
'TranType':'RS+',
'Name': 'Alo'
}, {
'TranType':'OPO',
'Name': 'Tpp'
}, {
'TranType':'Security In',
'Name': 'Jkl'
}, {
'TranType':'RS-',
'Name': 'Aoi'
}, {
'TranType':'Security out',
'Name': 'Nko'
}].sort((a, b) =>
tranTypePrecedences[a.TranType] - tranTypePrecedences[b.TranType]
)
);
.as-console-wrapper { min-height: 100%!important; top: 0; }