castComparator
将值转换为比较器函数
230 bytes
since v12.2.0
使用方法
创建一个可以传递给 Array.prototype.sort 的比较器函数。它接受属性名或映射函数。可选地,您可以传递自定义比较函数(例如用于 localeCompare 使用场景)。
castComparator 的第一个参数称为 mapping。这可以是:
- 函数:如果
mapping是函数,它将输入值映射为可比较的值。 - 属性名:如果
mapping是属性名,它将输入值映射为输入值的具有可比较值的属性。
import * as _ from "radashi";
const users = [ { id: 1, firstName: "Alice", lastName: "Smith" }, { id: 3, firstName: "Charlie", lastName: "Brown" }, { id: 2, firstName: "Drew", lastName: "Johnson" },];
const compareById = _.castComparator("id");users.sort(compareById);// [Alice, Drew, Charlie]
const compareByFullName = _.castComparator( (user) => `${user.firstName} ${user.lastName}`, (a, b) => b.localeCompare(a));users.sort(compareByFullName);// [Alice, Charlie, Drew]比较函数
可选地,您可以传递一个接收映射值并返回数字的自定义 compare 函数。如果未提供,值将使用内置的 < 和 > 运算符进行比较。
正数表示”右值”大于”左值”,负数表示”左值”大于”右值”,0 表示两个值相等。
const users = [ { id: 1, firstName: "Alice", lastName: "Smith" }, { id: 3, firstName: "Charlie", lastName: "Brown" }, { id: 2, firstName: "Drew", lastName: "Johnson" },];
const compareByFullName = _.castComparator( (user) => `${user.firstName} ${user.lastName}`, (a, b) => b.localeCompare(a));
users.sort(compareByFullName);// [Alice, Charlie, Drew]