tengo un objeto Necesito ordenarlo por TranType Property.
Los Trantype son como CS+,CS-,RS+,RS-, OPO, OPI, Security in, Security out. Necesito ordenarlo por CS+,CS-,RS+,RS-, OPO, OPI, Entrada de seguridad, Salida de seguridad
Ejemplo:
[ { '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' } ]Necesito ordenarlo como debajo de uno.
Aquí necesito tener la trantyoe de (CS+, OPI, RS+, Security In) son la primera prioridad. Y los (CS-, RS-, OPO, Security out) son la segunda prioridad.
[ { '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' } ]Por favor, ayúdame a obtener el resultado esperado.
El enfoque más sencillo y directo es hacer uso de un objeto como búsqueda de valores de precedencia de TranType ...
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; }