【前端】sort:js按照固定顺序排序

文章目录

场景

假设想要排序:[es、pt、de、fr]。要求这几个字符串一定排在前面,其他顺序随意。

代码

使用sort。

sort(a,b)原理:数组中a与b进行比较。若返回-1,a在前。返回1,b在前。返回0,顺序不变。

若是从小到大排序,经常使用a-b:返回负数表示a更小且a排前;返回正数表示b更小且b排前,即,a-b表示小的排前

typescript 复制代码
// 我们要对它进行排序
const array = [
  { language: "en", ord: 11 },
  { language: "es", ord: 11 }
];

// 顺序
const priorityLanguages = ['es', 'pt', 'de', 'fr'];

array.sort((a, b) => {
  const aIsPriority = priorityLanguages.includes(a.language);
  const bIsPriority = priorityLanguages.includes(b.language);
  
  if (aIsPriority && bIsPriority) {
    return priorityLanguages.indexOf(a.language) - priorityLanguages.indexOf(b.language);
  }
  if (aIsPriority) return -1;
  if (bIsPriority) return 1;
  return 0;
});
相关推荐
xiaotao13119 小时前
第九章:Vite API 参考手册
前端·vite·前端打包
午安~婉19 小时前
Electron桌面应用聊天(续)
前端·javascript·electron
lly20240619 小时前
C 标准库 - `<stdio.h>`
开发语言
沫璃染墨19 小时前
C++ string 从入门到精通:构造、迭代器、容量接口全解析
c语言·开发语言·c++
jwn99919 小时前
Laravel6.x核心特性全解析
开发语言·php·laravel
迷藏49419 小时前
**发散创新:基于Rust实现的开源合规权限管理框架设计与实践**在现代软件架构中,**权限控制(RBAC)** 已成为保障
java·开发语言·python·rust·开源
彧翎Pro20 小时前
基于 RO1 noetic 配置 robosense Helios 32(速腾) & xsense mti 300
前端·jvm
功德+n20 小时前
Linux下安装与配置Docker完整详细步骤
linux·运维·服务器·开发语言·docker·centos
明日清晨20 小时前
python扫码登录dy
开发语言·python
小码哥_常20 小时前
解锁系统设置新姿势:Activity嵌入全解析
前端