javascript - 尝试使用 reduce 方法在单个对象中折叠对象数组
问题描述
我一直在尝试使用数组的 reduce 方法将两个条目对象的列表汇总到一个对象中,但我得到的回报是最后一个条目的值。编码:
const swatches = [
{ emoji: "lion" , color: "#ff691f" },
{ emoji: "tiger" , color: "#fab81e" },
{ emoji: "fish" , color: "#7fdbb6" },
{ emoji: "frog" , color: "#19cf86" },
{ emoji: "pig" , color: "#f58ea8" },
{ emoji: "unicorn" , color: "#981ceb" },
{ emoji: "rabbit" , color: "#ffffff" },
{ emoji: "wolf" , color: "#000000" },
]
const animals = swatches.reduce( (emojis, entry) => emojis[entry.emoji] = entry.color, {} )
解决方案
您需要返回累加器emojis
。
const swatches = [
{ emoji: "lion" , color: "#ff691f" },
{ emoji: "tiger" , color: "#fab81e" },
{ emoji: "fish" , color: "#7fdbb6" },
{ emoji: "frog" , color: "#19cf86" },
{ emoji: "pig" , color: "#f58ea8" },
{ emoji: "unicorn" , color: "#981ceb" },
{ emoji: "rabbit" , color: "#ffffff" },
{ emoji: "wolf" , color: "#000000" },
]
const animals = swatches.reduce(
(emojis, entry) => (emojis[entry.emoji] = entry.color, emojis),
{}
);
console.log(animals);
.as-console-wrapper { max-height: 100% !important; top: 0; }
推荐阅读
- c++ - 我可以对 boost::adaptors::transformed over std::array 的结果使用 boost::copy_range 来取回另一个 std::array 吗?
- python - 了解 keras 中的平均(总和)池填充
- javascript - 如何在 wordpress 中使输入值永久化或使用全局变量
- python - ImportError:无法从“google.cloud”(未知位置)导入名称“bigquery”
- python - Python selenium - 无法建立新连接:[Errno 61] 连接被拒绝
- python - %time await main() throws SyntaxError: 'await' outside function in jupyter
- reactjs - 我应该如何修改受保护路由的路由?
- python - 是否有任何方法或函数可以从数据框列中仅提取 URL
- c# - 单个表达式中的多个正则表达式匹配
- python - 如何在pyqtgraph中移动矩形