编辑代码

//JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。 
// var arr = [18, 2, 10, 9, 88, 66, 22];
var arr = ['微信', '快手', '抖音', '其他', '头条', 7, 3, 9];

arr.sort(function (a, b) {
    if (typeof a === 'number' && typeof b === 'number') {
        return b - a; //降序排序
        
        // return a - b; //升序排序
    } else {
        a = a.toString()
        b = b.toString()

        return b.localeCompare(a, 'zh-CN'); //降序排序

        // return a.localeCompare(b, 'zh-CN'); //升序排序
    }
});

console.log(arr)


var objarr = [
    {name: '青岛', code: '九', info: {province: '山东'}},
    {name: '南京', code: 9, info: {province: '江苏'}},
    {name: '北京', code: 1, info: {province: '北京'}},
    {name: '上海', code: 2, info: {province: '上海'}},
    {name: '深圳', code: 5, info: {province: '广东'}}
];
function sortChinese (objarr, dataLeven) { // 参数:objarr 排序的数组; dataLeven 数组内的需要比较的元素属性
    /* 获取数组元素内需要比较的值 */
    function getValue (option) { // 参数: option 数组元素
        if (!dataLeven) return option
        var data = option
        dataLeven.split('.').filter(function (item) {
            data = data[item]
        })
        return data
    }

    objarr.sort(function (a, b) {
        a = getValue(a)
        b = getValue(b)

        if (typeof a === 'number' && typeof b === 'number') {
            // return b - a; //降序排序
            
            return a - b; //升序排序
        } else {
            a = a.toString()
            b = b.toString()

            // return b.localeCompare(a, 'zh-CN'); //降序排序

            return a.localeCompare(b, 'zh-CN'); //升序排序
        }
    })
}

sortChinese(objarr, 'name') // 例如:比较的是name,传入的就是 'name'
console.log(objarr);

sortChinese(objarr, 'info.province') // 例如:比较的是数组元素属性info内的province属性,传入的就是 'info.province'
console.log(objarr);

sortChinese(objarr, 'code') // 数字、文字混合
console.log(objarr);