第一种是纯数字的数组的排序。
第二种是数组中时对象,按照对象的某个属性排序。
挺经典的,记录下
// 基本 sort
var values = [0,1,5,10,15,9];
values.sort()
console.log("10">"9"); // false
console.log(values); // [0, 1, 10, 15, 5, 9]
values = [0,1,5,10,15,9];
values.sort(compare); // 注意这里compare没有()
console.log(values); // [0, 1, 5, 9, 10, 15]
function compare(value1, value2){
if(value1>value2){
return 1;
}else if(value1<value2){
return -1;
}else{
return 0;
}
}
console.log(compare.constructor); //function Function() { [native code] }
// 高级 sort
var data=[{name:"haojie", age:28},{name:"zzy", age:29},{name:"aa", age:100}];
data.sort(createComparefunction("name"));
console.log(data[0].name); // aa
console.log(data[1].name); // haojie
console.log(data[2].name); // zzy
data.sort(createComparefunction("age"));
console.log(data[0].name); // haojie
console.log(data[1].name); // zzy
console.log(data[2].name); // aa
function createComparefunction(propertyName){
return function (object1, object2){
if(object1[propertyName]>object2[propertyName]){
return 1;
}else if(object1[propertyName]<object2[propertyName]){
return -1;
}else{
return 0;
}
}
}