一个对象数组,单个对象里某个属性是数字,须要按这个属性的数字大小升序排序。数组
以下代码是一个对象数组按照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);
运行结果排序