如何使用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(歌曲(时,它会返回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);

谢谢

最新更新