定义一个方法
function compareValues(key, order = 'asc') {
console.log(key);
return function innerSort(a, b) {
if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) {
// 该属性在任何一个对象上都不存在
return 0;
}
const varA = (typeof a[key] === 'string')
? a[key].toUpperCase() : a[key];
const varB = (typeof b[key] === 'string')
? b[key].toUpperCase() : b[key];
let comparison = 0;
if (varA.length > varB.length) {
comparison = 1;
} else if (varA.length < varB.length) {
comparison = -1;
}
return (
(order === 'desc') ? (comparison * -1) : comparison
);
}
},
定义数组
const arr = [
{ name: 'zhangsan', age: '20', year: 2000 },
{ name: 'lisi', age: '36', year: 2001 },
{ name: 'wangwu', age: '50', year: 1989 },
{ name: '小明', age: '25', year: 1990 },
];
使用:
1、数组按`name`排序,默认为升序
arr.sort(compareValues('name'));
打印结果

2、数组按 `name` 降序排序
arr.sort(compareValues('name', 'desc'));
打印结果
