如何在js中排序时跳过字符串



我正试图从我的对象数组中对功绩列表进行排序,但在我的对象上,有一个字符串" 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))

最新更新