JavaScript 将对象数组转换成数组的对象
假设我们有以下以对象数组排列的有关团队的数据,我们的任务是将此数据转换为以角色为键、以玩家名称数组为值的对象。
我们的示例数组 −
const team = [{
role: 'Batsman',
player: 'V Kohli'
}, {
role: 'Wicket Keeper',
player: 'KL Rahul'
}, {
role: 'Batsman',
player: 'R Sharma'
}, {
role: 'Wicket Keeper',
player: 'R Pant'
}, {
role: 'Bowler',
player: 'B Kumar'
}, {
role: 'Bowler',
player: 'M Shami'
}, ]让我们定义一个函数 objectify(),它将数组作为参数并返回相应的对象。
代码如下 −
const objectify = (team) => {
const teamObject = {};
team.forEach(member => {
if(teamObject[member.role]){
teamObject[member.role].push(member.player);
}else{
teamObject[member.role] = [member.player];
}
});
return teamObject;
}
console.log(objectify(team));在这里,我们挨个遍历每个数组项,如果它存在于 teamObject 中,我们将该玩家推入其中;否则,我们将为其分配一个包含单个玩家的数组
以下为完整代码 −
示例
const team = [{
role: 'Batsman',
player: 'V Kohli'
}, {
role: 'Wicket Keeper',
player: 'KL Rahul'
}, {
role: 'Batsman',
player: 'R Sharma'
}, {
role: 'Wicket Keeper',
player: 'R Pant'
}, {
role: 'Bowler',
player: 'B Kumar'
}, {
role: 'Bowler',
player: 'M Shami'
}, ]
const objectify = (team) => {
const teamObject = {};
team.forEach(member => {
if(teamObject[member.role]){
teamObject[member.role].push(member.player);
}else{
teamObject[member.role] = [member.player];
}
});
return teamObject;
}
console.log(objectify(team));输出
此代码在控制台中的输出如下 −
{
Batsman: [ 'V Kohli', 'R Sharma' ],
WicketKeeper: [ 'KL Rahul', 'R Pant' ],
Bowler: [ 'B Kumar', 'M Shami' ]
}
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP