【发布时间】:2021-03-29 05:05:03
【问题描述】:
我有一个对象数组。我想按一个值对对象进行分组,然后将该值用作该对象中其余值的键。
例如我有这样的数组:
{
0: {prize: "Foo", first_name: "John", last_name: "Smith"},
1: {prize: "Foo", first_name: "Mary", last_name: "Smith"},
2: {prize: "Bar", first_name: "Jane", last_name: "Doe"},
3: {prize: "Bar", first_name: "Jack", last_name: "Jones"},
4: {prize: "Foo", first_name: "Judy", last_name: "Alvarez"},
}
我想要的结果是这样的:
{
Foo: [
{first_name: "John", last_name: "Smith"},
{first_name: "Mary", last_name: "Smith"},
{first_name: "Judy", last_name: "Alvarez"}
],
Bar: [
{first_name: "Jane", last_name: "Doe"},
{first_name: "Jack", last_name: "Jones"}
]
}
我正在使用 TypeScript,我得到的最接近的是使用我发现的这段代码 sn-p:
console.log(
_.chain(res.data)
.groupBy("prize")
.map((value: any, key: any) => ({prize: key, winners: value}))
.value()
);
这给了我这样的结果:
[
0: {
prize: "Foo",
winners: [
{prize: "Foo", first_name: "John", last_name: "Smith"},
{prize: "Foo", first_name: "Mary", last_name: "Smith"},
{prize: "Foo", first_name: "Judy", last_name: "Alvarez"}
]
},
1: {
prize: "Bar",
winners: [
{prize: "Bar", first_name: "Jane", last_name: "Doe"},
{prize: "Bar", first_name: "Jack", last_name: "Jones"}
]
},
]
我将如何修改我的代码以有效地实现我需要的格式?我什至不完全确定我是否走在正确的轨道上,也许代码需要完全改变?
这似乎是一个很常见的问题,之前可能已经回答过,但是因为我什至很难描述我想要的东西,所以我找不到任何东西。如果这是重复的,我很抱歉。
【问题讨论】:
标签: javascript arrays json typescript lodash