JS实现根据数组对象的某一属性排序
- 简单升序排列
var list = [
{ name: "jack", age: 14 },
{ name: "lily", age: 10 },
{ name: "king", age: 13 },
]
function orderList(attr) {
return function (a, b) {
return a[attr] - b[attr]
}
}
list.sort(orderList("age"));
console.log(list);
attr 为要排序的属性
得到结果:
- 根据某个属性值升序还是降序排列
/**数组根据数组对象中的某个属性值进行排序的方法
* 使用例子:newArray.sort(orderList('age',false)) //表示根据age属性降序排列;若第二个参数不传递,默认表示升序排序
* @param attr 排序的属性 如age属性
* @param rev true表示升序排列,false降序排序
* */
function orderList(attr, rev) {
//第二个参数没有传递 默认升序排列
if (rev == undefined) {
rev = 1;
} else {
rev = (rev) ? 1 : -1;
}
return function (a, b) {
a = a[attr];
b = b[attr];
if (a < b) {
return rev * -1;
}
if (a > b) {
return rev * 1;
}
return 0;
}
}
list.sort(orderList("age", false));
console.log(list);
如上第二个参数为false即为降序排列,结果如下: