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”按降序进行。
广告