[英]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.