// 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