一個對象數組,單個對象裏某個屬性是數字,須要按這個屬性的數字大小升序排序。數組
以下代碼是一個對象數組按照age屬性排序的方法:spa
1 var str=[ 2 {name:"a",age:50}, 3 {name:"b",age:20}, 4 {name:"c",age:40}, 5 {name:"d",age:30}, 6 ]; 7 function compare(key){ 8 return function(value1,value2){ 9 var val1=value1.key; 10 var val2=value2.key; 11 return val1-val2; 12 } 13 } 14 str.sort(compare('age')); 15 console.log(str);
運行了上面代碼,發現打印出來的仍是原來的對象數組,並無按照age屬性排序。這是爲何呢code
網上查了資料發現,對屬性的訪問,obj["key"]
與obj.key都是能夠的,不過,若是key值並不肯定,而是一個變量的時候,則只能經過obj[key]
的方式訪問。對象
知道了這個知識點,咱們再來實現一遍blog
1 var str=[ 2 {name:"a",age:50}, 3 {name:"b",age:20}, 4 {name:"c",age:40}, 5 {name:"d",age:30}, 6 ]; 7 function compare(key){ 8 return function(value1,value2){ 9 var val1=value1[key]; 10 var val2=value2[key]; 11 return val1-val2; 12 } 13 } 14 str.sort(compare('age')); 15 console.log(str);
運行結果排序