Объединение результатов запроса JSON - PullRequest
0 голосов
/ 07 июня 2018

Прямо сейчас у меня есть асинхронная функция (см. Фрагмент кода), которая возвращает ответ JSON;Массив, содержащий два объекта.Смотрите скриншот.

enter image description here Как я могу объединить объекты, чтобы я вернулся:

[{resultCount: 100, results: Array(100)}]

Я пробовал это:

   var combinedResults = jsonResponses.map((acc, item) => {
       acc.resultCount += item.resultCount;
       acc.results += item.results;
       return acc;
   });

Но получил это обратно:

enter image description here

Yikes !!

Любая помощь будет оценена!

    export function getDoorstepsSongs () {
      return async dispatch => {
        const page1 = 'https://itunes.apple.com/search?country=us&media=music&limit=50&attribute=songTerm&term=door&sort=ratingIndex'
        const page2 = 'https://itunes.apple.com/search?country=us&media=music&limit=50&offset=50&attribute=songTerm&term=door&sort=ratingIndex'
    
        const jsonResponses = await Promise.all([
          fetchJsonP(page1),
          fetchJsonP(page2),
        ]).then(responses => {
          return Promise.all(responses.map(res => res.json()))
        }).catch(console.error)
    
        console.time('processing songs')
    
        //
        // jsonResponses contains the results of two API requests=
        //
        // 1. combine the results of these requests
        // 2. sort the results with lib/sortSongs.js
        //
    
        const sortedSongs = sortSongs(combinedResults)
    
        console.timeEnd('processing songs')
    
        return dispatch({
          type: 'GET_DOORSTEPS_SONGS_SUCCESS',
          songs: sortedSongs,
        })
      }
    }

1 Ответ

0 голосов
/ 07 июня 2018

Использование Array.reduce

let arr = [{resultCount : 2, results : [1,2]}, {resultCount : 2, results : [3,4]}];

let result = [arr.reduce((a,c) => ({resultCount : a.resultCount + c.resultCount, results : [...a.results, ...c.results] }))];

console.log(result);
...