sort是排序的方法录语,如果要根據(jù)多個(gè)字段進(jìn)行排序癞尚,當(dāng)然得用遞歸了。
而Array.shift()這個(gè)函數(shù)就是專門為遞歸設(shè)計(jì)的惋耙。
shift:刪除數(shù)組的第一個(gè)元素捣炬、并返回第一個(gè)元素的值。
// 只設(shè)計(jì)升序绽榛,如果需要倒序湿酸,處理一下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)))
})
}