目标:
按照数组中对象的三个属性('isSorted', 'beforeIndex', 'afterIndex')进行排序
isSorted==true 排在前面,isSorted==false 排在后面
isSorted==true 时,再按照 afterIndex 值由小到大排序
isSorted==false 时,再按照 beforeIndex 值由小到大排序
// 数组重新排序
var compare = function (_isSorted, _beforeIndex, _afterIndex) {
return function (obj2, obj1) {
console.log(obj1, obj2)
var val1 = obj1[_isSorted]
var val2 = obj2[_isSorted]
if(val1 && val2) {
// 两者都已排序
var val3 = obj1[_afterIndex]
var val4 = obj2[_afterIndex]
if(val3 <= val4) {
return 1
}else {
return -1
}
}else if(!val1 && !val2) {
// 两者都未排序
var val5 = obj1[_beforeIndex]
var val6 = obj2[_beforeIndex]
if(val5 <= val6) {
return 1
}else {
return -1
}
}else {
if(val1) {
return 1
}else {
return -1
}
}
}
}
recallList.sort(compare('isSorted', 'beforeIndex', 'afterIndex'))
适用场景:
有一个乱序的对象数组,需要对该数组进行一次排序。上面的代码适用。
网友评论