gpt4 book ai didi

javascript - 如何按数组中的值组织二维数组?

转载 作者:行者123 更新时间:2023-11-30 13:59:42 26 4
gpt4 key购买 nike

我想组织一个二维数组。数组的值是对象,我想使用值中的数据作为新对象/数组的键。

我的数组:

let arr = [
{name: 'Tom', class: A, sport: football},
{name: 'Mary', class: C, sport: swimming},
{name: 'Sam', class: B, sport: baseball},
{name: 'Tom', class: A, sport: baseball},
{name: 'Jim', class: B, sport: run},
{name: 'Mary', class: C, sport: tennis}
]

我想要的结果:

let result = [
Tom: [{class: A, sport: football}, {class: A, sport: baseball}],
Mary: [{class: C, sport: swimming}, {class: C, sport: tennis}],
Sam: [{class: A, sport: baseball}],
Jim: [{class: B, sport: run}]
]

结果与上面略有不同没关系。我只想按名称组织数据并使其易于使用。

最佳答案

正如@Shidersz 指出的那样,无法获得插入的确切预期输出,因为它违反了数组的定义。

以下代码片段应用了一个转换,其输出是您预期输出的略微修改版本,但满足您按名称组织数据的需要。

arr.reduce(function (a, e, i, l) {
return Object.assign(a, {
[ e.name ]: a[e.name] && a[e.name].concat(e) || [ e ]
});
}, {});
{
Jim: [
{name: "Jim", class: "B", sport: "run"}
],
Mary: [
{name: "Mary", class: "C", sport: "swimming"},
{name: "Mary", class: "C", sport: "tennis"}
],
Sam: [
{name: "Sam", class: "B", sport: "baseball"}
],
Tom: [
{name: "Tom", class: "A", sport: "football"},
{name: "Tom", class: "A", sport: "baseball"}
]
}

或者,可以使用实用程序库来获得与@Paul 指出的类似的转换

关于javascript - 如何按数组中的值组织二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56535935/

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