gpt4 book ai didi

javascript - 将对象数组转换为具有 lodash 值的分组对象

转载 作者:行者123 更新时间:2023-11-30 09:22:05 24 4
gpt4 key购买 nike

我正在寻找一个紧凑的 lodash 解决方案来获取一个对象数组,然后使用数组中对象的键和每个键的唯一值创建一个新对象。

[
{
color: "black",
type: "bag",
},
{
color: "red",
type: "pants",
},
{
color: "black",
type: "jacket",
},
]

期望的输出:

{
color: ["black", "red"],
type: ["bag", "pants", "jacket"],
}

谢谢!

最佳答案

您可以使用 lodash#flatMap 解决此问题用lodash#toPairs iteratee,创建键和值数组对的扁平化版本。使用 lodash#groupBy用一个迭代函数删除数组对的键,Array#shift ,并使用这样的值作为集合的分组键。最后,使用 lodash#mapValues迭代器由 lodash#flatten 组成和 lodash#uniq , 展平数组并只获取每个分组数组的唯一值。请注意,函数组合使用 lodash#flow组合连续的函数参数以形成一个函数结果。

var result = _(array)
.flatMap(_.toPairs)
.groupBy(v => v.shift())
.mapValues(_.flow(_.flatten, _.uniq))
.value();

var array = [
{
color: "black",
type: "bag",
},
{
color: "red",
type: "pants",
},
{
color: "black",
type: "jacket",
}
];

var result = _(array)
.flatMap(_.toPairs)
.groupBy(v => v.shift())
.mapValues(_.flow(_.flatten, _.uniq))
.value();

console.log(result);
.as-console-wrapper{min-height:100%;top:0}
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>

关于javascript - 将对象数组转换为具有 lodash 值的分组对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51003461/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com