我有一个带有4个键的对象数组:
[
{
"team": "USA",
"team_profile_id": "10",
"player": "Captain America",
"player_id": "10X1"
},
{
"team": "USA",
"team_profile_id": "10",
"player": "The hulk",
"player_id": "10X2"
},
{
"team": "India",
"team_profile_id": "20",
"player": "Captain America",
"player_id": "10X1"
},
{
"team": "India",
"team_profile_id": "20",
"player": "SpiderMan",
"player_id": "10X5"
}
]
而且我想按“团队”对我的数组进行分组,以便为每个团队创建一个Player对象数组。>
[ { "team": "USA", "team_profile_id": "10", "Players": [ { "player": "Captain America", "player_id": "10X1" }, { "player": "The hulk", "player_id": "10X2" } ] }, { "team": "India", "team_profile_id": "20", "Players": [ { "player": "Captain America", "player_id": "10X1" }, { "player": "SpiderMan", "player_id": "10x5" } ] } ]
我目前正在尝试使用MDN原型中的reduce函数,但它无法处理子对象创建部分。
当前我已经尝试过:
var group_to_values = result.reduce(function(obj, item) { obj[item.team] = obj[item.team] || []; obj[item.team].push({ "team_profile_id":item.team_profile_id, "player":item.player, "player_id":item.player_id }); return obj; }, {});
但是没有给出期望的结果
我有一个带有4个键的对象数组:[{“ team”:“ USA”,“ team_profile_id”:“ 10”,“ player”:“ Captain America”,“ player_id”:“ 10X1”},{“团队”:“美国”,“ ...
由于结果需要是一个数组,您可以将其用作reduce的初始值,而不是对象:
这可能不是最好的方法,但是它可以工作。
[当您使用Array.reduce()
迭代玩家,破坏玩家对象,并在玩家的属性和使用传播的团队之间进行分隔。
您可以找到对象并添加新的播放器。
使用forEach
方法,您可以轻松拥有一系列不同的团队。
尝试以下操作。首先,我创建一组唯一的团队名称,然后基于该名称过滤数据以获取相关参与者的列表: