下面是一个示例代码,展示了如何按属性值对JavaScript对象数组进行排序,并根据条件重新排序:
// 原始对象数组
const arr = [
{ name: "John", age: 25 },
{ name: "Jane", age: 30 },
{ name: "Bob", age: 20 },
{ name: "Alice", age: 35 }
];
// 按 age 属性升序排序
arr.sort((a, b) => a.age - b.age);
console.log("按 age 属性升序排序:");
console.log(arr);
// 输出:
// [
// { name: "Bob", age: 20 },
// { name: "John", age: 25 },
// { name: "Jane", age: 30 },
// { name: "Alice", age: 35 }
// ]
// 根据条件重新排序
arr.sort((a, b) => {
// 如果年龄小于等于25岁,优先排在前面
if (a.age <= 25 && b.age <= 25) {
return a.age - b.age;
}
// 如果年龄大于25岁,按字母顺序排列
return a.name.localeCompare(b.name);
});
console.log("根据条件重新排序:");
console.log(arr);
// 输出:
// [
// { name: "Bob", age: 20 },
// { name: "John", age: 25 },
// { name: "Alice", age: 35 },
// { name: "Jane", age: 30 }
// ]
在上面的示例中,我们首先使用Array.sort
方法对对象数组进行排序,通过传递一个比较函数来指定排序规则。比较函数接收两个参数,a
和b
,代表数组中的两个元素。我们通过比较元素的age
属性来决定排序顺序。
然后,我们使用Array.sort
方法进行第二次排序,根据条件重新排序。在比较函数中,我们首先检查元素的age
属性是否都小于等于25岁,如果是,则按年龄升序排列。如果年龄大于25岁,我们使用String.prototype.localeCompare
方法比较元素的name
属性,以字母顺序排序。
最后,我们打印排序后的数组,展示了按属性值排序和根据条件重新排序的结果。