我正试图从我的对象数组中对功绩列表进行排序,但在我的对象上,有一个字符串" failed ",我想在排序期间跳过它,但当排序完成时,应在末尾添加失败的功绩
const markSheet = [{ merit: 1 }, { merit: "Failed" }, { merit: 2 }];
const defineMerit = (markSheet) => {
return markSheet
.filter((item) => item.merit !== "Failed")
.sort((a, b) => a.merit - b.merit);
};
console.log(defineMerit(markSheet))
的例子:
[
{
"merit": 1
},
{
"merit": 2
},
{
"merit": "Failed"
}
]
将失败的检查放入排序回调中(比较项是否失败的差异)
const markSheet = [{ merit: 1 }, { merit: "Failed" }, { merit: 2 }];
const defineMerit = (markSheet) => {
return markSheet
.sort((a, b) => (
((a.merit === 'Failed') - (b.merit === 'Failed'))
|| a.merit - b.merit
));
};
console.log(defineMerit(markSheet))
或随后反转过滤条件并与排序数组
组合
const markSheet = [{ merit: 1 }, { merit: "Failed" }, { merit: 2 }];
const defineMerit = (markSheet) => {
const sorted = markSheet
.filter((item) => item.merit !== "Failed")
.sort((a, b) => a.merit - b.merit);
return sorted.concat(
markSheet.filter((item) => item.merit === "Failed")
);
};
console.log(defineMerit(markSheet))