簡體   English   中英

根據屬性從最大到最小對數組中的對象進行排序?

[英]Sorting objects in an array based on a property from greatest to least?

我在Javascript中有一個帶有對象的數組。 我需要根據從最大到最小的屬性對它們進行排序。

我找不到不使用無法使用的Array.sort的解決方案。

相似數組的示例:

var arr = [{"name" : "bob", "age", 45}, {"name" : "Joe", "age" : 35}, {"name" : "Amy", "age" : 20}];

我想根據年齡(從大到小)進行排序,而不使用array.sort。

考慮到arr對象數組,您可以通過傳遞任何屬性來對arr進行排序。

請嘗試以下操作:

 var arr = [{"name" : "bob", "age": 45}, {"name" : "Joe", "age" : 35}, {"name" : "Amy", "age" : 20}]; function sortArray(arr,prop){ arr.sort((a,b)=>{ if(typeof a[prop] ==='string') return b[prop].localeCompare(a[prop]); return b[prop] - a[prop]; }); } //Sort array based on name sortArray(arr,"name"); console.log(arr); //Sort array based on age sortArray(arr,"age"); console.log(arr); 

如果不想使用sort ,則可以通過for循環實現舊的排序方式。 例如,這是一個按降序排列的插入排序 (從最大到最小):

 var arr = [{"name" : "Joe", "age" : 35}, {"name" : "Amy", "age" : 20}, {"name" : "bob", "age" : 45}]; function insertionSort (items) { var len = items.length; for (var i = 1; i < len; i++) { var tmp = items[i]; for (var j = i - 1; j >= 0 && (items[j]['age'] > tmp['age']); j--) { items[j + 1] = items[j]; } items[j + 1] = tmp; } arr = arr.reverse(); } insertionSort(arr); console.log(arr); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM