gpt4 book ai didi

javascript - 下划线 sortby 指定几个项目

转载 作者:行者123 更新时间:2023-12-03 03:15:20 27 4
gpt4 key购买 nike

我使用 underscoresortBy() 对字符串的 array 进行排序。但我想比其他字符串更早地对几个(硬编码的)字符串进行排序 - 我将向用户显示输出,并且将相关字符串放在前面会更自然。

例如:我希望 nametype 分别出现在第一和第二位,然后按字母顺序显示其他所有内容。

给定:

["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 数组将数字强制排序为字符串。

是否有一些更清晰、更干净、更不脆弱的方式来实现我想要的行为?

编辑:另外,上面可能还不清楚 - 我事先不知道数组的内容,而且我不知道 nametype 是否总是存在(也不知道在什么索引,如果它们确实存在的话)。

最佳答案

怎么样:

已更新

var array = ["above", "name", "below", "foo", "type", "bar"];

if(array.indexOf('type') > -1) {
array.splice(1, 0, array.splice(array.indexOf('type'), 1)[0]);
}

if(array.indexOf('name') > -1) {
array.splice(0, 0, array.splice(array.indexOf('name'), 1)[0]);
}

关于javascript - 下划线 sortby 指定几个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46797406/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com