javascript - 对对象数组进行排序,但第一位是固定的
问题描述
这是一个带有我要排序的数组的对象的示例:
{
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));
然后我可以找到这两个名字并将它们放在前两个位置,但是有排序功能,排序时可以做什么?
解决方案
您可能只需将您的功能修改为:
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);
});
推荐阅读
- excel - How can I convert a number in a cell to time format when sending this cell via email?
- php - PHP 打印 - 调用未定义的函数 printer_list()
- electron - 为什么 Electron-Angular 项目在构建时会出现 GL ERROR
- node.js - 使用 nodejs 包装时,Cypress.io 找不到规范
- javascript - 如何在数组中对数组的第二个值进行排序?
- c# - 语音识别语义解释 UWP
- javascript - 将 2D SDF 函数转换为 JavaScript
- php - 如何将 Varnish ESI 与模块化 PHP 模板系统一起使用
- ios - 经常重新计算路线的问题
- python - Coverage 无法将“manage.py”作为 Python 代码运行