[英]How to sort array of objects based on object property (which is Array) Javascript
[英]How does one sort an array of objects by an object's property value which itself is not naturally comparable but has a rule based precedence?
我有一個對象。 我需要按 TranType 屬性對其進行排序。
Trantype 類似於 CS+、CS-、RS+、RS-、OPO、OPI、Security in、Security out。 我需要按 CS+、CS-、RS+、RS-、OPO、OPI、Security in、Security out 對其進行排序
例子:
[
{
'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'
}
]
我需要將其排序為以下之一。
在這里,我需要將 ( CS+, OPI, RS+, Security In ) 的 trantyoe 放在首位。 並且(CS-、RS-、OPO、安全輸出)是第二優先級。
[
{
'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'
}
]
請幫助我按預期獲得輸出。
最簡單和最直接的方法是使用一個對象來查找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; }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.