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”按降序進行。
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP