function compare(name, minor) { return function (o, p) { var a, b; if (o && p && typeof o === 'object' && typeof p === 'object') { a = o[name]; b = p[name]; if (a === b) { return typeof minor === 'function' ? minor(o, p) : 0; } if (typeof a === typeof b) { return a < b ? -1 : 1; } return typeof a < typeof b ? -1 : 1; } else { thro("error"); } } }
使用方法
//測試數據
data: [{
name: '李尋歡',
age: 32,
rank: 1
},
{
name: '謝曉峰',
age: 28,
rank: 4
},
{
name: '瀟十一郎',
age: 27,
rank: 5
},
{
name: '楚留香',
age: 29,
rank: 3
},
{
name: '傅紅雪',
age: 35,
rank: 2
}
]
//先根據rank排序,再根據age排序,最后根據name排序
data.sort(compare('rank', compare('age', compare('name'))));
