0

现在我有一个异步函数(见代码片段),它返回一个 JSON 响应;包含两个对象的数组。见截图。

在此处输入图像描述 我怎样才能合并对象,这样我才能回来:

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

我试过这个:

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

但得到了这个:

在此处输入图像描述

哎呀!!

任何帮助将不胜感激!

    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,
        })
      }
    }

4

1 回答 1

2

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

于 2018-06-07T14:00:58.833 回答