Попытка использовать «уменьшить» вместо обычного цикла for - PullRequest
1 голос
/ 21 февраля 2020

Я пытаюсь получить общее количество 'stargazers_count' из репозитория github конкретного пользователя. Этот код, использующий 'for' l oop, работает. Но я хотел бы использовать «уменьшить». Я публикую то, что я пытался. Может кто-нибудь указать мне, где я не прав? JSON можно просмотреть по этому URL, используя ваше имя пользователя на github:

https://api.github.com/users/ $ {ваше имя пользователя} / repos

Это рабочий код, который используется для l oop:

axios.get(response.data.repos_url)
  .then((res) => {

    let starCount = 0;
    for(let i=0; i<res.data.length; i++) // find out the total number of github stars
    {
        starCount += res.data[i].stargazers_count;
    }

      response.data.NoOfStars = starCount; // add the total stars as a property in response object

Это то, что я пробовал с помощью «Reduce»:

axios.get(response.data.repos_url)
  .then((res) => {

    let starCount = 0;
    const reducer = (acc, currVal) => acc + currVal.stargazers_count;

    arr = res.data;
    starCount = arr.reduce(reducer); 

Это не сработало. Если я смогу получить краткое объяснение того, где и почему я ошибаюсь, это будет полезно.

1 Ответ

1 голос
/ 22 февраля 2020

Вам необходимо указать начальное значение для вашего аккумулятора, в противном случае при уменьшении будет использоваться первый элемент массива , равный , и это приведет к результату NaN.

starCount = arr.reduce(reducer,0);
...