繁体   English   中英

如何使用 reduce() 返回对象?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM