使用Node,我实现了一个ID3标记解析器,从MP3中获取标题、专辑和艺术家。
现在,我需要把我得到的信息,并按专辑名称分组。
在我的具体用法中,我试图从
这个:
[
{
title: 'Break You',
artist: 'Lamb Of God',
album: 'Ashes Of The Wake'
},
{
title: 'An Extra Nail For Your Coffin',
artist: 'Lamb Of God',
album: 'Ashes Of The Wake'
},
{
title: 'Envy And Doubt',
artist: 'Sever The King',
album: 'Traitor'
},
{
title: 'Self Destruct',
artist: 'Sever The King',
album: 'Traitor'
},
...
]
字符串
To this:(伪代码)
[
'Ashes Of The Wake'{
{
title: 'Break You',
artist: 'Lamb Of God'
},
{
title: 'An Extra Nail For Your Coffin',
artist: 'Lamb Of God'
}
}
'Traitor'{
{
title: 'Envy and Doubt',
artist: 'Sever The King'
},
{
title: 'Self Destruct',
artist: 'Sever The King'
}
},
...
]
型
最好的方法是什么?我对JS相对较新,所以它可能很简单。
5条答案
按热度按时间hpxqektj1#
使用
Array.prototype.forEach()
即可forEach()
方法对每个数组元素执行一次提供的函数。字符串
vd2z7a6w2#
可以使用Array.prototype.reduce
字符串
ndh0cuux3#
正如Kieran建议的那样,使用underscore.js为您提供了一个简单优雅的解决方案。
字符串
这是plunker:http://plnkr.co/edit/a7DhxpGx0C4FVMgIjzPY?p=preview
编辑
我想补充一点,如果你使用Node.js,你会希望使用lodash而不是下划线
odopli944#
OBS:'Ashes Of The Wake'和'Traitor'应该是数组,而不是对象,因为它们有多个子级。
你不必这样做,但是如果你想使用
underscore
,就像@丹尼尔说的那样,你可以使用groupBy
函数。字符串
将输出:
型
JSFiddle
hfsqlsce5#
在普通的JavaScript中,可以将
Object.groupBy
与对象一起使用。字符串
下面是一个示例:
型