【发布时间】:2018-03-29 13:46:18
【问题描述】:
我正在使用underscores sortBy() 对字符串中的array 进行排序。但是我想比其他字符串更早地对几个(硬编码)字符串进行排序 - 我将向用户显示输出,并且将相关字符串放在前面更自然。
例如:我希望 name 和 type 分别出现在第一位和第二位,然后按字母顺序排列其他所有内容。
给定:
["above", "name", "below", "foo", "type", "bar"]
我想要:
["name", "type", "above", "bar", "below", "foo"]
我知道我可以向sortBy() 提供iteratee,但我不太清楚如何干净、一致地获得所需的行为。
我试过了:
const relevantSort = function(key) {
if (key === 'name') { return [0, key]; }
if (key === 'type') { return [1, key]; }
return [2, key];
}
(我知道有办法收紧,但这与我的问题是正交的)。
这会产生一个稳定排序、正确排序的数组...但如果我有一堆硬代码并最终在某处返回[10, key],这会崩溃,因为Javascript 数组将强制数字排序为字符串。
是否有一些更清晰、更简洁、更不脆弱的方法来获得我想要的行为?
编辑:
另外,可能从上面看不清楚 - 我事先不知道数组的内容,我不知道name 或type 是否会一直存在(如果他们甚至不知道index确实存在)。
【问题讨论】:
标签: javascript sorting underscore.js