javascript - 按规则对列表进行排序

标签 javascript sorting

我有一个需要排序的列表。

['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/

相关文章:

javascript只删除循环中数组中的第一个匹配项

javascript - 尝试从助手导入 HTML,但 Rails 不喜欢它

javascript - localeCompare 自然排序?

javascript - javascript 中的逻辑未正确触发

javascript - 通过 JSON 应答验证简单的 HTML 表单

javascript - Switch 语句不更新 Document.getElementById()

Java数组改变一半的值等

java - 可配置系统的设计模式

c++ - 是否有像 lower_bound 这样的函数返回最后一个值而不是第一个值?

javascript - 在 Javascript 中按值给出一系列目标的排名分数