gpt4 book ai didi

javascript - 使用 lodash 组合具有相同键的对象

转载 作者:行者123 更新时间:2023-11-30 11:27:10 25 4
gpt4 key购买 nike

我有一个对象数组。我需要组合数组中具有相同键的所有对象。

这是原始数组:

[
{
foo: "A",
bar: [
{ baz: "1", qux: "a" },
{ baz: "2", qux: "b" }
]
},
{
foo: "B",
bar: [
{ baz: "3", qux: "c" },
{ baz: "4", qux: "d" }
]
},
{
foo: "A",
bar: [
{ baz: "5", qux: "e" },
{ baz: "6", qux: "f" }
]
},
{
foo: "B",
bar: [
{ baz: "7", qux: "g" },
{ baz: "8", qux: "h" }
]
}
]

我需要组合对象,所以输出如下:

[
{
foo: "A",
bar: [
{ baz: "1", qux: "a" },
{ baz: "2", qux: "b" },
{ baz: "5", qux: "e" },
{ baz: "6", qux: "f" }
]
},
{
foo: "B",
bar: [
{ baz: "3", qux: "c" },
{ baz: "4", qux: "d" },
{ baz: "7", qux: "g" },
{ baz: "8", qux: "h" }
]
}
]

如何使用 lodash 或 javascript 实现此目的?

最佳答案

使用_.groupBy() , 然后使用 _.mergeWith()将每个组合并为一个对象:

const data = [{"foo":"A","bar":[{"baz":"1","qux":"a"},{"baz":"2","qux":"b"}]},{"foo":"B","bar":[{"baz":"3","qux":"c"},{"baz":"4","qux":"d"}]},{"foo":"A","bar":[{"baz":"5","qux":"e"},{"baz":"6","qux":"f"}]},{"foo":"B","bar":[{"baz":"7","qux":"g"},{"baz":"8","qux":"h"}]}];

const result = _(data)
.groupBy('foo')
.map((g) => _.mergeWith({}, ...g, (obj, src) =>
_.isArray(obj) ? obj.concat(src) : undefined))
.value();

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

关于javascript - 使用 lodash 组合具有相同键的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47576674/

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