编辑代码

/*
分组排序

适用对象:前端开发,使用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));