2017-02-23 13 views
0

У меня есть этот Ионный код:Угловое - [] .concat.apply возвращают пустой массив

.factory('resultsFactory', function($http, $q, $rootScope, $firebaseArray, $timeout) { 
    var results = {}; 

    function _all(){ 
    var d = $q.defer(); 
    var palabras = $rootScope.textAreaOfrecer.toLowerCase().split(' '); 
    var solicitudes = []; 
    Promise.all(
       solicitudes = palabras.map(palabra => $firebaseArray(firebase.database().ref().child("solCompras").orderByChild("palabras/" 
               + palabra).equalTo(true))) 
        ); 

    var array = [].concat.apply([],solicitudes); 

    d.resolve(array); 

    return d.promise;  
    } 

    results.all = _all; 
    return results; 
}) 

Проблема заключается в том, что код: вар массив = [] .concat.apply ([], заботы); возвращает пустой массив.

json of solicitudes

+0

Привет. Какой результат вы ожидаете? Пожалуйста, напишите более подробную информацию, чтобы мы могли помочь вам с вашей проблемой. –

ответ

0

Использование [].concat.apply(solicitudes) вместо. Может быть, palabras - пустой массив, тогда [].map(...) == [] может напрямую вернуть Promise.all(solicitudes).

function _all() { 
     var palabras = $rootScope.textAreaOfrecer.toLowerCase().split(' '); 
     return Promise.all(palabras.map((palabra) => { 
      return $firebaseArray(firebase.database().ref().child("solCompras").orderByChild("palabras/" + palabra).equalTo(true)); 
     })); 
    } 
+0

извините, я не понял –

+0

проверить коллекцию 'palabras', является ли пустой массив? if true, тогда palabras.map (...) всегда возвращает [] –

+0

нет, его не пусто –

0
$scope.solicitudes = [{post: 'Loading..'}]; 


Promise.all(
     $scope.solicitudes = palabras.map(palabra => $firebaseArray(firebase.database().ref().child("solCompras").orderByChild("palabras/" + palabra 
                ).equalTo(true))) 
      ).then(function(){ 
           //http://www.jstips.co/en/flattening-multidimensional-arrays-in-javascript/ 
           var myNewArray = $scope.solicitudes.reduce(function(prev, curr) { 
           return prev.concat(curr); 
           }); 

           $scope.solicitudes = myNewArray; 
         }); 
+0

этот код разрешил мою проблему отлично –

Смежные вопросы