我创建了一个函数,负责根据传递给它的方向进行排序。我使用lodash库中的orderBy。
如何将空值始终移动到末尾,而不管排序方向如何?
这是我设法写的代码:
export interface TVProgram {
id: number;
title: string;
imdb: Rating;
}
export interface Rating {
rating: string;
}
import _ from "lodash";
import { TVProgram } from "../models/models";
export const sortProgramsByOrder = (
programs: TVProgram[],
order: boolean | "asc" | "desc"
) => {
const orderBy = _.orderBy(
programs,
(data) => {
if (data.imdb === null) {
return 0;
}
return Number(data.imdb.rating);
},
[order]
);
return orderBy;
};
我不知道这是否是最清晰的编写方法,但它很有效:
const orderBy = _.orderBy(
programs,
(data) => {
if (data.imdb === null) {
if (order === "asc") {
return 11;
} else if (order === "desc") {
return -1;
}
}
return Number(data.imdb.rating);
},
[order]
);