[英]How can I return an object using reduce()?
编写一个名为getSongCountByArtist
的函数,它接收歌曲数组并返回一个对象。 对象中的键应该是艺术家姓名,值应该是原始数组中该艺术家的歌曲数。
我的代码解决方案:
function getSongCountByArtist(arr){ return arr.reduce(function(acc,val){ let artistSong = val.name; let songNo = artistSong.length; return acc[val.artist] + songNo; }, {}) } getSongCountByArtist(songs); //NaN
我的数据源https://github.com/PJMantoss/iterators2/blob/master/data.js
问题解释:该函数应该返回一个对象,以艺术家姓名为键,以艺术家的歌曲数为值。 但是在运行getSongCountByArtist
(songs) 时,它返回NaN 。 如何重构我的代码以使其正常工作? 谢谢
我找到了解决方法。 我重构了代码,现在它返回了正确的数据。 请看下面
function getSongCountByArtist(arr) {
return arr.reduce(function (acc, val) {
if (acc[val.artist] === undefined) acc[val.artist] = 0;
acc[val.artist]++;
return acc;
}, {});
}
//test
getSongCountByArtist(songs);
谢谢
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.