sort是排序的方法,如果要根据多个字段进行排序,当然得用递归了。
而Array.shift()这个函数就是专门为递归设计的。
shift:删除数组的第一个元素、并返回第一个元素的值。
// 只设计升序,如果需要倒序,处理一下field就可以了
sort(arr, fields) {
let checkOrder = (left, right, fields) => {
let field = fields.shift()
if (field === undefined) return 0;
return left[field] === right[field] ? checkOrder(left, right, fields) : (left[field] < right[field] ? -1 : 1)
}
return arr.sort((left, right) => {
return checkOrder(left, right, JSON.parse(JSON.stringify(fields)))
})
}