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

在JavaScript中对数组重新排序:按balance属性降序排列

实现按balance属性降序排序的reorder函数

没问题,这事儿很简单——咱们可以利用JavaScript数组内置的sort()方法,结合自定义的比较函数来实现你需要的reorder函数。

核心实现思路

sort()方法接受一个比较函数,这个函数会接收两个待比较的数组元素a和b:

  • 如果返回正数,b会被排在a前面
  • 如果返回负数,a会被排在b前面
  • 返回0则位置不变

要实现降序排列(balance从大到小),只需要返回b.balance - a.balance即可。另外,为了避免修改原始数组,我们可以先创建数组的副本再排序。

完整代码实现

function reorder(arr) {
  // 用扩展运算符创建数组副本,避免修改原数组
  return [...arr].sort((a, b) => b.balance - a.balance);
}

使用示例

// 原始数组
var arr = [
  {name: 'a', surname: 'a', balance: 10},
  {name: 'b', surname: 'b', balance: 21},
  {name: 'c', surname: 'c', balance: 43},
  {name: 'd', surname: 'd', balance: 47}
];

// 调用reorder函数重新排序
arr = reorder(arr);

console.log(arr);
// 输出结果:
// [
//   {name: 'd', surname: 'd', balance: 47},
//   {name: 'c', surname: 'c', balance: 43},
//   {name: 'b', surname: 'b', balance: 21},
//   {name: 'a', surname: 'a', balance: 10}
// ]

额外处理:兼容balance缺失或非数值的情况

如果你的数组里可能存在balance属性不存在、或者值不是数字的元素,可以加个兜底逻辑,把这类元素排到最后:

function reorder(arr) {
  return [...arr].sort((a, b) => {
    // 给缺失/非数值的balance设置一个极小值,让它们排在末尾
    const balanceA = typeof a.balance === 'number' ? a.balance : -Infinity;
    const balanceB = typeof b.balance === 'number' ? b.balance : -Infinity;
    return balanceB - balanceA;
  });
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:12:06