编写一个名为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
(歌曲(时,它会返回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);
谢谢