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

JavaScript如何将数组中符合属性条件的对象排列至最前端

实现方案

我们可以通过Array.prototype.sort()自定义比较函数实现需求,核心思路是给不同规则的元素设置优先级数值,数值越小排序越靠前:

  • 优先级0:breed属性值为Shiba的对象,排在最前
  • 优先级1:带有breed属性但值不为Shiba的对象,排在中间
  • 优先级2:不包含breed属性的对象,排在最后

基础实现代码

// 示例输入
let dogs = [
  {id: 0, breed: 'Pug'},
  {id: 1, breed: 'Shiba'},
  {id: 2},
  {id: 3, breed: 'Shar Pei'},
]

const sortedDogs = dogs.sort((a, b) => {
  const getPriority = (item) => {
    if (item.breed === 'Shiba') return 0
    if ('breed' in item) return 1
    return 2
  }
  return getPriority(a) - getPriority(b)
})

扩展补充

如果需要同一优先级内按breed的字典序排序,可以补充同优先级的比较逻辑:

const sortedDogs = dogs.sort((a, b) => {
  const getPriority = (item) => {
    if (item.breed === 'Shiba') return 0
    if ('breed' in item) return 1
    return 2
  }
  const priorityA = getPriority(a)
  const priorityB = getPriority(b)
  // 优先级不同时直接比较优先级
  if (priorityA !== priorityB) return priorityA - priorityB
  // 同是带breed的中间优先级对象,按breed字母顺序排序
  if (priorityA === 1) return a.breed.localeCompare(b.breed)
  // 其余情况保持原相对顺序
  return 0
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 14:27:01