碎片时间学编程「94]:反转对象的键值对,而不改变它

碎片时间学编程「94]:反转对象的键值对,而不改变它

  • 使用Object.keys()Array.prototype.reduce()方法反转对象的键值对并应用提供的函数(如果有)。
  • 省略第二个参数 fn ,以获取反转键而不对其应用函数。
  • 每个反转键对应的反转值是一个键数组,负责生成反转值。如果提供了一个函数,它将应用于每个反转键。

JavaScript

const invertKeyValues = (obj, fn) =>
  Object.keys(obj).reduce((acc, key) => {
    const val = fn ? fn(obj[key]) : obj[key];
    acc[val] = acc[val] || [];
    acc[val].push(key);
    return acc;
  }, {});

示例:

invertKeyValues({ a: 1, b: 2, c: 1 }); // { 1: [ 'a', 'c' ], 2: [ 'b' ] } invertKeyValues({ a: 1, b: 2, c: 1 }, value => 'group' + value); // { group1: [ 'a', 'c' ], group2: [ 'b' ] }

更多内容请访问我的网站:https://www.icoderoad.com

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章