对象数组按属性排序

一个对象数组,单个对象里某个属性是数字,须要按这个属性的数字大小升序排序。数组

以下代码是一个对象数组按照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);

运行结果排序

相关文章
相关标签/搜索