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

如何在JavaScript中按age数字属性排序对象数组?

按age属性排序JavaScript对象数组的实现方法

当然可以实现,以下是两种符合需求的实现方式:

一、生成排序后的对象数组

先复制原数组避免修改原始数据,再通过sort()方法传入自定义比较函数,基于age属性做升序排序:

var object = [
    { name: 'Mar', age: 32 ,height:40},
    { name: 'Carla', age: 10 ,height:15},
    { name: 'Hazel', age: 5 ,height:80}
];

// 复制原数组后排序,不改动原数据
var newobject = [...object].sort((a, b) => a.age - b.age);

执行后newobject的结果就是你预期的排序后对象数组:

[
    { name: 'Hazel', age: 5 ,height:80},
    { name: 'Carla', age: 10 ,height:15},
    { name: 'Mar', age: 32 ,height:40}
];

二、生成嵌套数组形式的结果

如果需要转换成数组嵌套的格式,可在排序后用map()方法转换结构:

var object = [
    { name: 'Mar', age: 32 ,height:40},
    { name: 'Carla', age: 10 ,height:15},
    { name: 'Hazel', age: 5 ,height:80}
];

var new_sorted_array = [...object]
    .sort((a, b) => a.age - b.age)
    .map(item => [item.name, item.age, item.height]);

执行后new_sorted_array的结果为:

[
   ['Hazel', 5 ,80] , 
   ['Carla', 10 ,15], 
   ['Mar', 32 ,40]
];

关键说明

  • sort()方法默认按字符串规则排序,所以必须传入(a, b) => a.age - b.age这样的比较函数,才能实现数值类型的升序排序;如果要降序,改成b.age - a.age即可。
  • 使用[...object]或者object.slice()复制原数组,是为了避免sort()方法直接修改原始数组的数据。

内容的提问来源于stack exchange,提问作者Cindy Adriana Bohrquez Santana

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 22:25:41