一、自定義一個比較器,其參數爲待排序的屬性。javascript
二、將帶參數的比較器傳入sort()。java
var data = [ {name: "Bruce", age: 23, id: 16, score: 80}, {name: "Alice", age: 24, id: 12, score: 90}, {name: "David", age: 21, id: 11, score: 70}, {name: "Cindy", age: 22, id: 10, score: 100}, ]; data.sort(compareUp("age")); data.sort(compareDown("age")); function compareUp(propertyName) { // 升序排序 if ((typeof data[0][propertyName]) != "number") { // 屬性值爲非數字 return function(object1, object2) { var value1 = object1[propertyName]; var value2 = object2[propertyName]; return value1.localeCompare(value2); } } else { return function(object1, object2) { // 屬性值爲數字 var value1 = object1[propertyName]; var value2 = object2[propertyName]; return value1 - value2; } } } function compareDown(propertyName) { // 降序排序 if ((typeof data[0][propertyName]) != "number") { // 屬性值爲非數字 return function(object1, object2) { var value1 = object1[propertyName]; var value2 = object2[propertyName]; return value2.localeCompare(value1); } } else { return function(object1, object2) { // 屬性值爲數字 var value1 = object1[propertyName]; var value2 = object2[propertyName]; return value2 - value1; } } }