【发布时间】:2016-12-22 00:07:26
【问题描述】:
我想汇总一个对象数组并返回另一个对象数组中对象出现的次数。最好的方法是什么?
从此
var arrayOfSongs = [
{"title":"Blue","duration":161.71,"audioUrl":"/assets/music/blue","playing":false,"playedAt":"2016-12-21T22:58:55.203Z"},
{"title":"Blue","duration":161.71,"audioUrl":"/assets/music/blue","playing":false,"playedAt":"2016-12-21T22:58:55.203Z"},
{"title":"Blue","duration":161.71,"audioUrl":"/assets/music/blue","playing":false,"playedAt":"2016-12-21T22:58:55.203Z"},
{"title":"Green","duration":161.71,"audioUrl":"/assets/music/blue","playing":false,"playedAt":"2016-12-21T22:58:55.203Z"}
];
到此
var newArrayOfSongs = [
{"title": "Blue", "playCount": 3 },
{"title": "Green", "playCount": 1}
]
我试过了
arrayOfSongs.reduce(function(acc, cv) {
acc[cv.title] = (acc[cv.title] || 0) + 1;
return acc;
}, {});
}
但它返回一个对象:
{ "Blue": 3, "Green": 1};
【问题讨论】:
-
"我正在尝试..." – 你尝试了什么?你走了多远?怎么了?它是怎么出错的?
-
Object -> 数组很容易使用 Object.keys 和 Array#map ... 例如
Object.keys(obj).map(title => ({title, playCount:obj[title]})); -
将该对象更改为您想要的数组应该很简单,只需遍历属性即可。
标签: javascript arrays javascript-objects