Как я могу вернуть объект, используя redu ()? - PullRequest
0 голосов
/ 06 марта 2020

Напишите функцию с именем 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 . Как я могу изменить свой код для работы? Спасибо

1 Ответ

0 голосов
/ 07 марта 2020

Я нашел способ обойти это. Я изменил код, и теперь он возвращает правильные данные. См. Ниже

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);

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...