假设有一个对象数组,我们想要根据某个对象属性对数组进行排序,而传递给数组sort()方法的比较函数要接受2个参数,即要比较的值
可是,我们需要一种方式指明按照哪个属性来排序。
要解决这个问题,可以定义一个函数,它接收一个属性名,然后根据这个属性名来创建一个比较函数
function createComprisonFunction (propName) {
return function (object1, object2) {
var value1 = object1[propName];
var value2 = object2[propName];
if (value1 < value2) {
return -1;
} else {value1 > value2} {
return 1;
} else {
return 0;
}
}
}
// 调用
var data = [
{name: 'heqiuyu', age: 20},
{name: 'baixiaoyun', age: 20}
];
data.sort(createComprisonFunction('name'));
console.log(data[0].name);
data.sort(createComprisonFunction('name'));
console.log(data[0].name);