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

如何按指定字符串值对JavaScript对象数组进行排序?

按指定字符串值排序对象数组

你可以利用JavaScript的Array.sort()方法,通过自定义比较函数实现这个需求。核心逻辑是在比较函数中判断对象的country字段是否为目标值(这里是'Canada'),返回对应的排序权重即可。

基础实现:将Canada排在最前面

const stores = [
  {id: 1, name: 'Store1', country: 'USA'},
  {id: 2, name: 'Store2', country: 'Canada'},
  {id: 3, name: 'Store3', country: 'USA'},
  {id: 4, name: 'Store4', country: 'Canada'}
];

const sortedStores = stores.sort((a, b) => {
  // 如果a是Canada、b不是,a排前面
  if (a.country === 'Canada' && b.country !== 'Canada') {
    return -1;
  }
  // 如果b是Canada、a不是,b排前面
  if (b.country === 'Canada' && a.country !== 'Canada') {
    return 1;
  }
  // 相同country的保持原数组顺序
  return 0;
});

console.log(sortedStores);
// 输出结果:
// [
//   {id: 2, name: 'Store2', country: 'Canada'},
//   {id: 4, name: 'Store4', country: 'Canada'},
//   {id: 1, name: 'Store1', country: 'USA'},
//   {id: 3, name: 'Store3', country: 'USA'}
// ]

扩展:支持多优先级排序

如果后续需要按多个指定字符串顺序排序(比如先Canada,再USA,其他国家最后),可以用优先级数组简化逻辑:

const priorityOrder = ['Canada', 'USA'];

const sortedStores = stores.sort((a, b) => {
  // 获取当前country在优先级数组中的索引,不在数组里的设为数组长度(排最后)
  const aPriority = priorityOrder.indexOf(a.country) !== -1 
    ? priorityOrder.indexOf(a.country) 
    : priorityOrder.length;
  const bPriority = priorityOrder.indexOf(b.country) !== -1 
    ? priorityOrder.indexOf(b.country) 
    : priorityOrder.length;
  
  return aPriority - bPriority;
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 18:14:59