You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JS的sort方法将指定数组对象移动到数组首位

解决方案

Array.sort 比较函数的返回值规则为:返回负数时a排在b前,返回正数时b排在a前,返回0时保持原有相对顺序。你原有逻辑错误的原因是只要任意一个元素匹配就返回1,会导致匹配项被排列到数组末尾。

修正后的实现代码如下:

const arr = [{
    id: 'a',
    name: 'test name 1'
  },
  {
    id: 'b',
    name: 'test name 2'
  },
  {
    id: 'c',
    name: 'test name 3'
  }
];

const testId = 'c';

// 注意sort是原地排序,先用展开运算符复制原数组避免修改原数组
const sortedArr = [...arr].sort((a, b) => {
  // a匹配、b不匹配,a放前面
  if (a.id === testId && b.id !== testId) return -1;
  // b匹配、a不匹配,b放前面
  if (b.id === testId && a.id !== testId) return 1;
  // 都匹配/都不匹配,保持原有相对顺序
  return 0;
});

console.log(sortedArr);
// 输出顺序:[{id: 'c', ...}, {id: 'a', ...}, {id: 'b', ...}] 符合预期

该逻辑也支持多个匹配项的场景,所有符合条件的元素都会被优先排列在数组头部,非匹配项保留原有的先后顺序。

内容的提问来源于stack exchange,提问作者firatozcevahir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 21:06:05