我有一个需要排序的列表。
['Product ED', 'Product CX', 'Product XY', 'Product ED']
这个列表必须按照定义的规则排序:
['CX', 'XY', 'ED']
因此,最终列表必须按照此规则排序,如下所示:
['Product CX', 'Product XY', 'Product ED', 'Product ED']
你会如何实现这样的算法?
编辑: 好吧,我在写完这个问题后就想到了一个简单的想法......
这里是:
var l = ['Product ED', 'Product CX', 'Product XY', 'Product ED'];
var rules = ['CX', 'XY', 'ED'];
l.sort(function(a, b) {
return rules.indexOf(a.replace(/^Product /, '')) > rules.indexOf(b.replace(/^Product /, ''));
})
['产品 CX'、'产品 XY'、'产品 ED'、'产品 ED']
最佳答案
好吧,快速而肮脏的方法是在每个值前加上一个排序键。 '1Product CX', '2Product XY' 等,对其进行排序,然后将它们剥离。
只需确保您附加的排序键长度相同,如果超过 10 个,则需要 '01'、'02' 等。
如果你想正确地做到这一点,那么你需要定义一个比较函数并将其作为参数传递给“排序”函数:http://www.w3schools.com/jsref/jsref_sort.asp
关于javascript - 按规则对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6914504/