JavaScript数组嵌套对象排序实战:sort()与localeCompare()详解
本文详解JavaScript中对包含嵌套对象的数组进行排序的方法。通过sort()方法配合自定义比较函数,可实现基于数值或字符串属性的升序/降序排列。示例涵盖多条件排序及利用localeCompare()处理中文姓名的技巧,帮助开发者掌握复杂数据结构的排序逻辑。
在 JavaScript 开发中,若需对包含嵌套对象的数组执行排序操作,可直接调用数组内置的 sort() 方法。
sort() 方法允许传入一个自定义的比较函数以定义排序规则。该比较函数需返回负数、零或正数,以此决定两个元素的相对位置。针对对象属性排序,可在比较函数中通过点号或方括号语法访问嵌套属性并进行对比。
示例1
let arr = [
{ id: 1, name: 'John', age: 25 },
{ id: 2, name: 'Bob', age: 30 },
{ id: 3, name: 'Mary', age: 30 },
{ id: 4, name: 'Tom', age: 20 }
];
arr.sort(function(a, b) {
if (a.age < b.age) {
return -1;
}
if (a.age > b.age) {
return 1;
}
// 年龄相同的情况下,按照 id 排序
if (a.id < b.id) {
return -1;
}
if (a.id > b.id) {
return 1;
}
return 0;
});
console.log(arr);
执行结果:

示例2
var arr = [
{name:'大', age:5},
{name:'剑', age:18},
{name:'师', age:8},
];
// 排序方法
function compare(property) {//property:根据什么属性排序
return function(a,b){
var value1 = a[property];
var value2 = b[property];
// value2 - value1; ——> 降序
// value1 - value2; ——> 升序
return value1 - value2;//升序排序
}
}
console.log(arr.sort(compare('age')))
执行结果:

示例3
JavaScript 提供了字符串对比方法 localeCompare(),该方法返回一个数字,用于指示参考字符串与对比字符串在排序中的相对位置(前、后或相同)。此方法通常不单独使用,而是配合字符串排序逻辑共同作用。
let arr = [
{ name: "张三", age: 20 },
{ name: "李四", age: 25 },
{ name: "王五", age: 22 }
];
// 按年龄升序排序
arr.sort((a, b) => a.age - b.age);
console.log(arr);
/*
[
{ name: "张三", age: 20 },
{ name: "王五", age: 22 },
{ name: "李四", age: 25 }
]
*/
// 按姓名升序排序
arr.sort((a, b) => a.name.localeCompare(b.name));
console.log(arr);
/*
[
{ name: "张三", age: 20 },
{ name: "李四", age: 25 },
{ name: "王五", age: 22 }
]
*/
什么是数组嵌套对象
数组嵌套对象指的是数组元素为对象类型,这些对象内部可包含多个属性或定义相关方法。
在处理此类嵌套对象数组时,可采用多种手段访问和操作数据。常见操作方式包括:
- 遍历数组:利用 for 循环、forEach 方法或 for…of 循环逐一访问数组内的每个对象。
- 访问对象属性:通过点符号(.)或方括号([])语法获取对象的特定属性值。
- 递归处理:当对象内部仍包含数组等嵌套结构时,可通过递归函数深入处理多层嵌套数据。
- 使用高阶函数:借助 map、filter、reduce 等数组高阶方法,对数组元素进行转换或复杂操作。
至此,关于 JavaScript 中数组嵌套对象排序方法的示例详解已介绍完毕。如需了解更多 JavaScript 数组与嵌套对象相关内容,建议查阅本站过往文章或继续浏览后续相关教程,感谢大家的支持!
JS运算符优先级与结合性的区别是什么?
2026-11-05 13:22:02
JS Map怎么只遍历Key或Value
2026-11-05 13:00:36
D3.js 与 ECharts 选型对比:灵活性 vs 开发效率
2026-11-05 09:45:01
为什么JS中typeof []返回object:数组类型检测误区解析
2026-11-04 19:50:47
D3.js 新手入门:环境搭建与第一个条形图实现
2026-11-04 10:49:48
