Skip to content

invertBy

INFO

出于兼容性原因,此函数仅在 es-toolkit/compat 中提供。它可能具有替代的原生 JavaScript API,或者尚未完全优化。

es-toolkit/compat 导入时,它的行为与 lodash 完全一致,并提供相同的功能,详情请见 这里

给定对象的键和值会像 invert 函数一样被反转,生成一个新的对象。

如何将值反转为键由 iteratee 函数指定。如果未提供 iteratee 函数,则值将直接用作键。

新对象的值是 iteratee 函数返回的值对应的键的数组。

签名

typescript
function invertBy<K extends PropertyKey, V>(object: Record<K, V>, iteratee?: (value: V) => string): Record<string, K[]>;

参数

  • object (Record<K, V>): 需要反转的对象。
  • iteratee ((value: V) => string): 指定如何将对象的值转换为其他字符串的函数。如果未提供,则值将直接用作键。

返回值

(Record<string, K[]>): 反转后的对象。键是通过 iteratee 函数转换的值,值是与这些值相同的键的数组。

示例

typescript
const obj = { a: 1, b: 2, c: 1 };
const result = invertBy(obj);
// result => { '1': ['a', 'c'], '2': ['b'] }

const obj = { a: 1, b: 2, c: 1 };
const result = invertBy(obj, value => `group${value}`);
// result => { 'group1': ['a', 'c'], 'group2': ['b'] }

采用 MIT 许可证发布。