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

如何编写函数按指定字段值优先排序对象数组?

实现指定字段优先排序的函数

核心思路就是利用数组的sort()方法,自定义比较逻辑,让匹配目标值的元素优先排列。

具体实现代码

function prioritizeByField(arr, field, targetValue) {
  // 注意:sort会修改原数组,如需保留原数组可以先复制一份:[...arr].sort(...)
  return arr.sort((a, b) => {
    const aMatches = a[field] === targetValue;
    const bMatches = b[field] === targetValue;
    
    if (aMatches && !bMatches) {
      return -1; // 匹配的元素排前面
    }
    if (!aMatches && bMatches) {
      return 1; // 让另一个匹配元素排前面
    }
    // 都匹配或都不匹配时,保持原数组的相对顺序
    return 0;
  });
}

示例使用

比如你的原始数组:

const originalArray = [
  {id: '1', nazwa: 'Example', lokalizacja: 'Example', klucz: 'Example', edit: '0'},
  {id: '2', nazwa: 'Example', lokalizacja: 'Example', klucz: 'Example', edit: '0'},
  {id: '2', nazwa: 'Example', lokalizacja: 'Example', klucz: 'Example', edit: '0'},
  {id: '3', nazwa: 'Example', lokalizacja: 'Example', klucz: 'Example', edit: '0'}
];

// 让id为'2'的元素优先排列
const sortedArray = prioritizeByField(originalArray, 'id', '2');
console.log(sortedArray);

输出结果就会和你期望的一致:

[
  {id: '2', nazwa: 'Example', lokalizacja: 'Example', klucz: 'Example', edit: '0'},
  {id: '2', nazwa: 'Example', lokalizacja: 'Example', klucz: 'Example', edit: '0'},
  {id: '1', nazwa: 'Example', lokalizacja: 'Example', klucz: 'Example', edit: '0'},
  {id: '3', nazwa: 'Example', lokalizacja: 'Example', klucz: 'Example', edit: '0'}
]

额外说明

  • 如果不想修改原数组,记得在排序前复制一份,比如用[...arr]或者arr.slice()创建副本再排序。
  • 如果需要非优先的元素也按该字段排序(比如剩下的按id升序),可以把最后返回0的地方改成:
    return a[field].localeCompare(b[field]); // 字符串排序,数字类型直接用 a[field] - b[field]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 15:18:13