gpt4 book ai didi

javascript - 排序保持 2 项在顶部

转载 作者:行者123 更新时间:2023-12-02 01:34:45 24 4
gpt4 key购买 nike

我有一个像这样的数组对象

const d = [
{ id: 20, text: 'deaf' },
{ id: 30, text: 'acta', },
{ id: 0, text: 'deema1' },
{ id: -1, text: 'deema2' },
]

我想按文本对数组进行排序,但希望将 id -1 和 0 始终放在最前面,所以结果将是

// sorted
[
{ id: -1, text: 'deema2' },
{ id: 0, text: 'deema1' },
{ id: 30, text: 'acta' },
{ id: 20, text: 'deaf' },
]

我尝试像 d.sort((a, b) => (a.text).localeCompare(b.text)) 那样排序,但不确定如何处理 case -1 和 0

const d = [
{ id: 20, text: 'deaf' },
{ id: 30, text: 'acta', },
{ id: 0, text: 'deema1' },
{ id: -1, text: 'deema2' },
];

d.sort((a, b) => (a.text).localeCompare(b.text))

console.log(d);

最佳答案

您可以使用 indexOf :

const d = [
{ id: 20, text: 'deaf' },
{ id: 30, text: 'acta', },
{ id: 0, text: 'deema1' },
{ id: -1, text: 'deema2' },
{ id: 0, text: 'ace' },
{ id: -999, text: 'hello' },
{ id: 800, text: 'game' },
]

d.sort((a, b) => [0,-1].indexOf(b.id) - [0,-1].indexOf(a.id)
|| a.text.localeCompare(b.text));

console.log(d);

这将用 id 对所有对象进行排序-1 首先,其中,text属性将定义顺序,然后是所有带有 id 的对象0,(再次按 text 相对排序),最后所有其他对象按 text 排序.

如果您希望 0 和 -1 之间没有区别,但可以按 text 对所有这些进行排序他们之间,然后使用 includes而不是 indexOf :

const d = [
{ id: 20, text: 'deaf' },
{ id: 30, text: 'acta', },
{ id: 0, text: 'deema1' },
{ id: -1, text: 'deema2' },
{ id: 0, text: 'ace' },
{ id: -999, text: 'hello' },
{ id: 800, text: 'game' },
]

d.sort((a, b) => [0,-1].includes(b.id) - [0,-1].includes(a.id)
|| a.text.localeCompare(b.text));

console.log(d);

关于javascript - 排序保持 2 项在顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72631079/

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