/*
分组排序
适用对象:前端开发,使用JavaScript作为编程语言
实现一个函数,对输入的数组进行分组排序。
输入的数据中包含三种不同类型的数据,数值类型、字符串以及日期类型。
输出一个数组,其中包含原始数据中的全部数据,并按以下规则分组有序:
对原始数据按数据类型分组(分段),数值类型的在最前,中间部分是字符串,日期类型在最后
每种相同类型的数据段中,数据按降序排列。即:数值类型依其值降序,字符串依照字典序降序,日期类型按日期值逆序。
输入数据中仅包含题目要求的数据,无需错误处理。
输入示例:
[10, 'a', 'b', 2, new Date('2000/01/01'), 'ab', new Date('2020/02/02')]
输出示例:
[10, 2, 'b', 'ab', 'a', '2020/02/02', '2000/01/01']
注意,输出示例中最后的元素,应为其值,题目中的写法只是为了表示它对应原始数据中的元素。
*/
const sort = (arr) => {
const priority = ['object', 'string', 'number'];
return arr.sort((a, b) => {
const aPriority = priority.indexOf(typeof a);
const bPriority = priority.indexOf(typeof b);
if (aPriority === bPriority) {
if (typeof a === 'string') {
return b.localeCompare(a);
} else {
return b - a;
}
}
return bPriority - aPriority;
});
}
const demo = [10, 'a', 'b', 2, new Date('2000/01/01'), 'ab', new Date('2020/02/02')];
console.log(sort(demo));