JavaScript 按属性值对对象数组进行排序程序

要理解此示例,您应了解以下 JavaScript 编程 主题


示例 1:按属性名称对数组进行排序

// program to sort array by property name

function compareName(a, b) {

    // converting to uppercase to have case-insensitive comparison
    const name1 = a.name.toUpperCase();
    const name2 = b.name.toUpperCase();

    let comparison = 0;

    if (name1 > name2) {
        comparison = 1;
    } else if (name1 < name2) {
        comparison = -1;
    }
    return comparison;
}

const students = [{name: 'Sara', age:24},{name: 'John', age:24}, {name: 'Jack', age:25}];

console.log(students.sort(compareName));

输出

[{name: "Jack", age: 25},
{name: "John", age: 24},
{name: "Sara", age: 24}]

在上面的程序中,sort() 方法用于按其对象元素的 name 属性对数组进行排序。

sort() 方法根据自定义排序函数(在此例中为 compareName)的返回值对其元素进行排序。

这里,

  • 使用 toUpperCase() 方法将属性名转换为大写。
  • 如果比较两个名称的结果为1,则更改它们的顺序。
  • 如果比较两个名称的结果为-1 或 0,则保持它们的顺序不变。

示例 2:按年龄属性对数组进行排序

// program to sort array by property name

function compareAge(a, b) {

    return a.age - b.age;
}

const students = [{name: 'Sara', age:24},{name: 'John', age:22}, {name: 'Jack', age:27}];

console.log(students.sort(compareAge));

输出

[{name: "John", age: 22},
{name: "Sara", age: 24},
{name: "Jack", age: 27}]

在上面的程序中,sort() 方法用于按 age 属性对数组元素进行排序。

要比较两个对象的 age 属性,我们可以直接相减。

  • 如果它们的差值为负数,则更改它们的顺序。
  • 如果它们的差值为正数,则保持它们的顺序不变。

另请阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战