我有一系列貨幣["GBP", "EUR", "NOK", "DKK", "SKE", "USD", "SEK", "BGN"]
。我想通過移動預定義列表來訂購它,如果貨幣存在於數組的開頭。預定義列表是['EUR', 'USD', 'DKK', 'SKE', 'NOK', 'GBP']
。 所以在這種情況下,它應該返回['EUR', 'USD', 'DKK', 'SKE', 'NOK', 'GBP', 'SEK', BGN']
。按預定義的規則排列陣列
但如果未過濾的數組不包含預先列表中的所有值,它也應該正確排序。例如:["GBP", "EUR", "NOK", "LTU", "ZGN"]
應該像['EUR', 'NOK', 'GBP', 'LTU', 'ZGN'
我嘗試使用此功能對它進行排序:
list.sort(c => ['EUR', 'USD', 'DKK', 'SKE', 'NOK', 'GBP'].indexOf(c))
但是卻讓所有預定義的貨幣在列表的末尾,而不是在從。也許有更好的方法來做到這一點?
'.sort()'的回調需要參數 - 第一個和第二個比較器。你可以用'list.sort((c,d)=> [...]。indexOf(c)> [...]。indexOf(d)?1:[...]來做同樣的事情。 indexOf(c)<[...]。indexOf(d)?-1:0);'但是,根據需要調整'>'和'<? – Deryck