JavaScript 中根据字符串属性值对对象数组进行排序


给定的任务是使用 JavaScript 根据字符串属性值对对象数组进行排序。

假设有一个对象数组,我们需要使用字符串属性对这些元素进行排序。在以下场景中,我们正在根据“company”属性对对象数组进行排序。

const array = [ {Company: 'Oneplus', Manufacturing: 'China'}, {Company: 'Samsung', Manufacturing: 'South korea'}, {Company: 'Nothing', Manufacturing: 'India'} ]; Output = // it sorted the array of objects by "company" property. [ {"Company":"Nothing","Manufacturing":"India"}, {"Company":"Oneplus","Manufacturing":"China"}, {"Company":"Samsung","Manufacturing":"South korea"} ]

我们可以通过使用sort()方法和compare()函数来完成此任务,即根据字符串属性值对对象数组进行排序。

Sort()

sort()方法对数组对象中的所有元素进行排序,并返回排序后的数组。默认情况下,它将按升序排序。

语法

以下是 sort() 方法的语法:

Array.sort();

比较函数

比较函数将根据参数返回负值、零或正值。

比较函数的语法如下:

function(a, b){return a - b}

注意 - sort() 函数比较两个值,将结果发送到比较函数,然后根据结果对输出进行排序。

  • 如果结果为负数,则 a 将排在 b 之前。

  • 如果为 0(零),则什么也不发生。

  • 如果结果为正数,则 b 将排在 a 之前。

在这里,如果我们想根据字符串属性值对对象数组进行排序,我们需要使用sort()方法,它将对所有数组元素进行排序,以及compare函数,当我们将其作为参数传递给sort()方法时,它将定义排序顺序和排序模式。

示例 1

按升序排序

以下是一个示例,其中一个对象数组已使用字符串属性值进行排序:

<!DOCTYPE html> <html> <head> <title>Sort array of objects by string property value</title> </head> <body> <button onClick="fun()"> Click to sort </button> <p id="para"></p> <script> function fun() { function func( object1, object2 ){ if (object1.Company < object2.Company) return -1; if (object1.Company > object2.Company) return 1; return 0; } const array = [ {Company: 'Oneplus', Manufacturing: 'China'}, {Company: 'Samsung', Manufacturing: 'South korea'}, {Company: 'Nothing', Manufacturing: 'India'} ]; array.sort(func); document.getElementById("para").innerHTML = "After sorting "Company" in ascending order: " + JSON.stringify(array); }; </script> </body> </html>

正如我们看到的输出,我们使用了 sort() 方法根据字符串值对数组对象属性进行排序。我们将 compare() 函数作为 sort() 方法的参数传递,以按升序对“company”进行排序。

示例 2

按降序排序

以下是如何根据字符串属性值按降序对对象数组进行排序的示例。

<!DOCTYPE html> <html> <head> <title>Sort array of objects by string property value</title> </head> <body> <button onClick="fun()"> Click to sort </button> <p id="para"></p> <script> function fun() { function func( object1, object2 ){ if (object1.Manufacturing < object2.Manufacturing) return -1; if (object1.Manufacturing > object2.Manufacturing) return 1; return 0; } var array = [ {Company: 'Oneplus', Manufacturing: 'China'}, {Company: 'Samsung', Manufacturing: 'South korea'}, {Company: 'Nothing', Manufacturing: 'India'} ]; array.sort(func); document.getElementById("para").innerHTML = "After sorting "Manufacturing" in descending order: " + JSON.stringify(array); }; </script> </body> </html>

如输出所示,我们指定了compare()函数,即排序应根据“Manufacturing”按降序进行。

更新于: 2022-09-22

3K+ 次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告