🎶 Sym - 一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)平台

📕 思源笔记 - 一款桌面端笔记应用,支持 Windows、Mac 和 Linux

🎸 Solo - B3log 分布式社区的博客端节点,欢迎加入下一代社区网络

♏ Vditor - 一款浏览器端的 Markdown 编辑器

将一个对象的键值进行调换

2020-07-28

描述

在不修改的情况下,将一个对象中的键值对进行转换。转换后的值和每一个将要被转换的键相对应,他们是值相同的所有键组成的一个数组。如果提供了函数,则将该函数应用于每一个被转换了的键上。

提示

  • 使用 Object.keys()Array.prototype.reduce() 来转换一个对象中的键值对
  • 如果提供了函数的话,则进行调用
  • 第二个参数 fn 为可选值,应用于每一个被转换的键。默认为不运行。

代码

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"] }

返回总目录

每天 30 秒系列之 JavaScript 代码


欢迎注册黑客派社区,开启你的博客之旅。让学习和分享成为一种习惯!

留下你的脚步