JS實現根據數組對象的某一屬性排序
- 一、冒泡排序(先了解冒泡排序機制)
- 二、根據數組對象的某一屬性排序(引用sort方法排序)
一、冒泡排序(先了解冒泡排序機制)
以從小到大排序為例,冒泡排序的原理就是通過兩層循環把數組中兩兩相鄰的元素進行比較,是的大的元素放到后邊,元素交換位置,從而一步步的交換元素的位置,使得最大的元素放到數組的末尾,這樣內部的循環就進行了一輪,再根據外部的循環依次再把次大一點的元素放到數組的末尾,從而實現數組的逐步排序。代碼如下:
// 冒泡排序
var arr = [52,3,8,57,75,2,1];
for (var i = 0; i<arr.length; i++) {for (var j =0;j<arr.length-i; j++) {if(arr[j]>arr[j+1]){var temp = arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}
}
console.log(arr); //[1, 2, 3, 8, 52, 57, 75]
二、根據數組對象的某一屬性排序(引用sort方法排序)
定義一個數組
var newArray = [{name: "aaa",value: 0
},
{name: "ddd",value: 3
},
{name: "bbb",value: 1
},
{name: "eee",value: 4
},
{name: "ccc",value: 2
}];// 排序
function compare(property) {return function (a, b) {var value1 = a[property];var value2 = b[property];return value1 - value2;}
}
//打印看結果
console.log(newArray.sort(compare("value")))//根據字符串排序,不能用 - ,字符串相減得到NAN,要用<,> 來
function compare(prop) {return function (a, b) {var value1 = a.props[prop].uiValues[0]var value2 = b.props[prop].uiValues[0]if(value1 > value2){return -1;}else if(value1 < value2){return 1;}else{return 0;}}
}