我有一个函数,它从多个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循环来分隔每个花括号部分,但是我还需要一种方法来将它们分开,然后再将它们放入另一个数组中。不确定这里的最佳方法。在此先感谢您的任何帮助
答案 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"]