對象數組按屬性排序


一個對象數組,單個對象里某個屬性是數字,需要按這個屬性的數字大小升序排序。

如下代碼是一個對象數組按照age屬性排序的方法:

 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屬性排序。這是為什么呢

網上查了資料發現,對屬性的訪問,obj["key"]與obj.key都是可以的,不過,如果key值並不確定,而是一個變量的時候,則只能通過obj[key]的方式訪問。

知道了這個知識點,我們再來實現一遍

 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);

運行結果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM