SOURCE

// var datas = [
//     {
//         "sum(本期净认购套数)": 0,
//         "sum(未售套数)": 8,
//         "sum(未售单价)": 17725,
//         "楼层": "4",
//         "sum(本期认购单价)": 0
//     },
//     {
//         "sum(本期净认购套数)": 0,
//         "sum(未售套数)": 17,
//         "sum(未售单价)": 17017,
//         "楼层": "2",
//         "sum(本期认购单价)": 0
//     },
//     {
//         "sum(本期净认购套数)": 1,
//         "sum(未售套数)": 5,
//         "sum(未售单价)": 24594,
//         "楼层": "1",
//         "sum(本期认购单价)": 25457
//     },
//     {
//         "sum(本期净认购套数)": 1,
//         "sum(未售套数)": 3,
//         "sum(未售单价)": 17556,
//         "楼层": "7",
//         "sum(本期认购单价)": 15617
//     },
//     {
//         "sum(本期净认购套数)": 0,
//         "sum(未售套数)": 11,
//         "sum(未售单价)": 17620,
//         "楼层": "3",
//         "sum(本期认购单价)": 0
//     },
//     {
//         "sum(本期净认购套数)": 0,
//         "sum(未售套数)": 2,
//         "sum(未售单价)": 9989,
//         "楼层": "-",
//         "sum(本期认购单价)": 0
//     },
//     {
//         "sum(本期净认购套数)": 0,
//         "sum(未售套数)": 4,
//         "sum(未售单价)": 17685,
//         "楼层": "2幢101室",
//         "sum(本期认购单价)": 0
//     },
//     {
//         "sum(本期净认购套数)": 0,
//         "sum(未售套数)": 11,
//         "sum(未售单价)": 16486,
//         "楼层": "5",
//         "sum(本期认购单价)": 0
//     }
// ]

function isPositive(str) {
    str = str.trim();
    var subStr = str.substring(0, 2);
    if (!isNaN(subStr) && !subStr.startsWith('-')) {
        return true;
    }

    subStr = str.substring(0, 1);
    if (!isNaN(subStr) && !subStr.startsWith('-')) {
        return true;
    }

    return false;
}

function isMinus(str) {
    str = str.trim();
    var subStr = str.substring(0, 2);
    if (!isNaN(subStr) && subStr.startsWith('-')) {
        return true;
    }

    return false;
}

function isLetter(str) {
    str = str.trim();
    var subStr = str.substring(0, 1);
    var reg = /^[A-Za-z]+$/;
    return reg.test(subStr)
}

function isExistChinese(str) {
    str = str.trim();
    var reg = /[\u4E00-\u9FA5\uFE30-\uFFA0]/;
    if (reg.test(str)) {
        return true;
    } else {
        return false;
    }
}

function isStartWithMinus(str) {
    str = str.trim();
    if (str.startsWith('-') && isNaN(str)) {
        return true;
    }
    return false;
}

function isOnlyMinus(str) {
    str = str.trim();
    var arr = str.split('');
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] != '-') {
            return false;
        }
    }
    return true;
}

function processData(columnStr, dataStr, paramStr) {
    var level1 = [];
    var level2 = [];
    var level3 = [];
    var level4 = [];
    var level5 = [];
    var level6 = [];

    var datas = JSON.parse(dataStr);

    // 先把楼层数据分类
    for (var i = 0; i < datas.length; i++) {
        var d = datas[i];
        var floor = d['楼层'];

        // 优先判断中文
        if (isExistChinese(floor)) {
            level4.push(d);
            continue;
        }

        if (isPositive(floor)) {
            level1.push(d);
            continue;
        }

        if (isMinus(floor)) {
            level2.push(d);
            continue;
        }

        if (isLetter(floor)) {
            level3.push(d);
            continue;
        }

        // 先判断是否全部为'-',在判断是否已'-'开头
        if (isOnlyMinus(floor)) {
            level6.push(d);
            continue;
        }

        if (isStartWithMinus(floor)) {
            level5.push(d);
            continue;
        }

        level6.push(d);
    }

    // 正数降序
    level1.sort(function (d1, d2) {
        var f1 = d1['楼层'];
        var f2 = d2['楼层'];
        var f1Str = f1.substring(0, 2);
        if (isNaN(f1Str)) {
            f1Str = f1.substring(0, 1);
        }
        var f2Str = f2.substring(0, 2);
        if (isNaN(f2Str)) {
            f2Str = f2.substring(0, 1);
        }
        return Number(f1Str) - Number(f2Str);
    })

    // 负数升序
    level2.sort(function (d1, d2) {
        var f1 = d1['楼层'];
        var f2 = d2['楼层'];
        return Number(f1) - Number(f2);
    })

    level3.sort(function (d1, d2) {
        var f1 = d1['楼层'].toUpperCase();
        var f2 = d2['楼层'].toUpperCase();
        var code1 = f1.charCodeAt(0);
        var code2 = f2.charCodeAt(0);
        return code2 - code1;
    })

    level6.sort(function (d1, d2) {
        var f1 = d1['楼层'];
        var f2 = d2['楼层'];
        var order1 = isOnlyMinus(f1) ? Infinity : 1;
        var order2 = isOnlyMinus(f2) ? Infinity : 1;
        return order2 - order1;
    })

    var new_datas = level6.concat(level5, level4, level3, level2, level1);

    return JSON.stringify(new_datas);
}
// console.log("level6:" + JSON.stringify(level6));
// console.log("level5:" + JSON.stringify(level5));
// console.log("level4:" + JSON.stringify(level4));
// console.log("level3:" + JSON.stringify(level3));
// console.log("level2:" + JSON.stringify(level2));
// console.log("level1:" + JSON.stringify(level1));
// console.log(new_datas);
console 命令行工具 X clear

                    
>
console