首页 > 解决方案 > 对对象数组进行排序,但第一位是固定的

问题描述

这是一个带有我要排序的数组的对象的示例:

{
  first: 'Zangief',
  second: 'Cammy'
  names: [
    {name: 'Dee Jay'},
    {name: 'Zangief'},
    {name: 'Dhalsim'}
    {name: 'Chun-Li'},
    {name: 'Blanka'},
    {name: 'Cammy'}
  ]
}

我想Zangief固定在第一位和Cammy第二位,其余的按字母顺序排列。

预期结果:

[
    {name: 'Zangief'},
    {name: 'Cammy'},
    {name: 'Blanka'}
    {name: 'Chun-Li'},
    {name: 'Dee Jay'},
    {name: 'Dhalsim'},
]

我知道这会按字母顺序对名称进行排序:

obj.names.sort((a,b) => (a.name > b.name) ? 1 : ((b.name > a.name) ? -1 : 0));

然后我可以找到这两个名字并将它们放在前两个位置,但是有排序功能,排序时可以做什么?

标签: javascriptsorting

解决方案


您可能只需将您的功能修改为:

obj.names.sort((a,b) => {
    if (a.name === obj.first || (a.name === obj.second && b.name !== obj.first)){
        return -1;
    }
    return (a.name > b.name) ? 1 : ((b.name > a.name) ? -1 : 0);
});

推荐阅读