合并存储在一个变量中的多个数组

时间:2018-06-04 18:09:41

标签: javascript arrays json

我有一个函数,它从多个API获取信息,并回调到一个变量(结果):

function combineObjs(callback) {  
    function partialResult(results) {
        callback(results);
    };        
    searchFlickr.searchFlickr(searchTerm, searchCount, searchPage, partialResult);
    searchUnsplash.searchUnsplash(searchTerm, searchCount, searchPage, partialResult);
}

combineObjs( function(results) {
    console.log(results)
});

就获取数据而言,它似乎运作良好。但是,当从每个源请求2个结果时,数据将返回:

[ { id: 'flkr-13545844805',
    link: 'https://www.flickr.com/photos/28596055@N02/13545844805' },
  { id: 'flkr-3474831728',
    link: 'https://www.flickr.com/photos/9848951@N06/3474831728' } ]
[ { id: 'us-fRPxHaHwWwk',
    link: 'https://unsplash.com/photos/fRPxHaHwWwk' },
  { id: 'us-JXy99waA3Fo',
    link: 'https://unsplash.com/photos/JXy99waA3Fo' } ]

我已经查找了使用javascript合并数组,但我能找到的唯一信息是合并单独的数组,必须至少命名为2才能将一个数组推入另一个数组。由于我只有一个数组,因此这些方法不适用。

我也尝试过使用for循环来分隔每个花括号部分,但是我还需要一种方法来将它们分开,然后再将它们放入另一个数组中。不确定这里的最佳方法。在此先感谢您的任何帮助

1 个答案:

答案 0 :(得分:3)

根据我的理解,你可能想要做Array.prototype.reduce。

const multilevel = [["a","b"], ["c","d"]];

const flat = multilevel.reduce(function(flat_array, current){
    if(Array.isArray(current)) {
        return [...flat_array, ...current];
     } else {
         return [...flat_array, current];
     }
},[]); //["a","b","c","d"]