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

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

在本文中,我们将尝试通过一些示例来了解如何在JavaScript中按属性值对对象数组进行排序。

前提: JavaScript中的对象数组

示例:

Input:  
[  
    { name: "Ram", age: 17 },  
    { name: "Mohan", age: 30 },  
    { name: "Shyam", age: 15 },  
    { name: "Shyam", age: 17 },  
]  
Output:  
[  
    { name: 'Shyam', age: 15 },  
    { name: 'Ram', age: 17 },  
    { name: 'Shyam', age: 17 },  
    { name: 'Mohan', age: 30 }  
]  

解释:

  • 选择任意属性,根据数组中其他对象的相同属性值对对象进行排序。

有几种方法可以根据属性值对对象数组进行排序。

  • 使用带有比较函数的sort()方法。
  • 使用sort()方法。
  • 对字符串值使用localeCompare()方法。

方法1:使用带有比较函数的sort()方法

这里我们将使用sort()方法,并在sort方法中明确定义一个比较方法来根据用户的需求进行比较值。然后在compare()方法中,我们将使用if-else语句来检查属性值。

例子: 下面是上述方法的实现。

Javascript

let employees_details = [
    { name: "Ram", age: 17 },
    { name: "Mohan", age: 30 },
    { name: "Shyam", age: 15 },
    { name: "Shyam", age: 17 },
];
 
let compare = (a, b) => {
    if (a.age < b.age) {
        return -1;
    }
    if (a.age > b.age) {
        return 1;
    }
    return 0;
};
 
employees_details.sort(compare);
console.log(employees_details);

输出

[
  { name: 'Shyam', age: 15 },
  { name: 'Ram', age: 17 },
  { name: 'Shyam', age: 17 },
  { name: 'Mohan', age: 30 }
]

方法2:使用sort()方法

此方法也使用sort()方法,但与之前的方法不同,我们将缩短语法并在内联中完成所有工作。在内联技术中,我们将使用三元运算符的概念来比较两个不同的值,然后返回相应的结果。

示例: 以下是上述方法的实现。

JavaScript

let employees_details = [
    { name: "Ram", age: 17 },
    { name: "Mohan", age: 30 },
    { name: "Shyam", age: 15 },
    { name: "Shyam", age: 17 },
];
 
employees_details.sort((a, b) => (
    a.age > b.age ? 1 : b.age > a.age ? -1 : 0));
console.log(employees_details);

输出

[
  { name: 'Shyam', age: 15 },
  { name: 'Ram', age: 17 },
  { name: 'Shyam', age: 17 },
  { name: 'Mohan', age: 30 }
]

方法3:使用localeCompare()函数对字符串值进行排序

localeCompare() 函数按字母顺序比较字符串。通过按字符串属性对对象进行排序,可以得到按字母顺序排序的数组。

示例:employees_details数组根据name属性使用localeCompare()进行字母顺序排序。

Javascript

let employees_details = [
    { name: "Ram", age: 17 },
    { name: "Mohan", age: 30 },
    { name: "Shyam", age: 15 },
    { name: "Shyam", age: 17 },
];
 
employees_details.sort((a, b) =>
    a.name.localeCompare(b.name));
console.log(employees_details);

输出

[
  { name: 'Mohan', age: 30 },
  { name: 'Ram', age: 17 },
  { name: 'Shyam', age: 15 },
  { name: 'Shyam', age: 17 }
]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程