标签:null rop 综合 跳出循环 bre ops return java 循环
function sortByProps(item1, item2, obj) {
// 多字段排序
//asc升序 desc 降序
var props = [];
if (obj) {
props.push(obj);
}
var cps = [], // 存储排序属性比较结果。
// 如果未指定排序属性(即obj不存在),则按照全属性升序排序。
// 记录下两个排序项按照各个排序属性进行比较得到的结果
asc = true;
function handleNull(val) {
return val === ‘‘ || val === null;
}
if (props.length < 1) {
for (var p in item1) {
let a1, b1;
a1 = item1[p];
b1 = item2[p];
if (handleNull(a1) && handleNull(b1)) {
cps.push(0);
} else if (handleNull(a1) && !handleNull(b1)) {
cps.push(1);
break;
} else if (!handleNull(a1) && handleNull(b1)) {
cps.push(-1);
break; // 小于时跳出循环。
} else {
if (a1 > b1) {
cps.push(1);
break; // 大于时跳出循环。
} else if (a1 === b1) {
cps.push(0);
} else {
cps.push(-1);
break; // 小于时跳出循环。
}
}
}
} else {
for (var i = 0; i < props.length; i++) {
var prop = props[i];
for (var o in prop) {
asc = prop[o] === ‘asc‘;
let a2, b2;
a2 = item1[o];
b2 = item2[o];
if (handleNull(a2) && handleNull(b2)) {
cps.push(0);
} else if (handleNull(a2) && !handleNull(b2)) {
cps.push(asc ? 1 : -1);
break; // 大于时跳出循环。
} else if (!handleNull(a2) && handleNull(b2)) {
cps.push(asc ? -1 : 1);
break; // 小于时跳出循环。。
} else {
if (a2 > b2) {
cps.push(asc ? 1 : -1);
break; // 大于时跳出循环。
} else if (a2 === b2) {
cps.push(0);
} else {
cps.push(asc ? -1 : 1);
break; // 小于时跳出循环。。
}
}
}
}
}
// 根据各排序属性比较结果综合判断得出两个比较项的最终大小关系
for (var j = 0; j < cps.length; j++) {
if (cps[j] === 1 || cps[j] === -1) {
return cps[j];
}
}
return false;
}
//示例
data.sort(function(a, b) {
return sortByProps(a, b, {
productName: ‘asc‘,
id: ‘asc‘,
});
});
标签:null rop 综合 跳出循环 bre ops return java 循环
原文地址:https://www.cnblogs.com/lzq035/p/14338891.html