Сращивание не работает в цикле forEach

Когда я пытаюсь соединить свой массив, он удаляет неправильные, я думаю, что это связано с индексом forEach при объединении.. Пробовал уже несколько часов и не может заставить его работать: /

     dpd.users.get(function (result) {
        $scope.persons = result;

            $scope.persons.forEach(function(entry, index) {
                dpd.timesheets.get({user:entry.id}, function (result2) {

                entry.timesheets = result2;

            //splice person if timesheets of person is empty

                if (entry.timesheets.length <=0){
                   $scope.persons.splice(index, 1);
                }

......................


person Stweet    schedule 26.05.2015    source источник
comment
Ничего не произойдет, если вы просто соедините его. Вам нужно назначить возврат переменной. Нравится: $scope.persons = $scope.persons.splice(index, 1);   -  person Cory Danielson    schedule 26.05.2015
comment
@CoryDanielson: в JavaScript splice изменяет массив на месте. (В отличие, скажем, от slice или map или filter.) Делает ли angular это не обычным Array#splice? Вы на самом деле не хотели бы присваивать обычное возвращаемое значение splice исходной переменной; splice возвращает массив удаленных элементов.   -  person T.J. Crowder    schedule 26.05.2015
comment
на самом деле я попробовал это, и это работает со мной. и, как упоминалось в предыдущих комментариях, обновите массив на месте. plnkr.co/edit/13Z4hoqOAzIJBCa58rSX?p=preview   -  person Kareem Elshahawy    schedule 26.05.2015
comment
вы соединяете массив, который вы повторяете, в середине цикла forEach... это обязательно вызовет проблемы   -  person user428517    schedule 26.05.2015
comment
@sgroves: Хороший вопрос. Поведение четко определено, но это не значит, что оно не сбивает с толку.   -  person T.J. Crowder    schedule 26.05.2015
comment
@ T.J.Crowder, да, ты вполне мог бы это сделать, но я бы не стал. запишите индексы, которые нужно соединить, а затем соедините их после цикла forEach. или используйте Array.filter или что-то в этом роде.   -  person user428517    schedule 26.05.2015
comment
Это должно работать отлично. Вы лучше проверьте свои условия и поток. Начните с регистрации того, какие из них удалены, добавив строку console.log(entry) в блок if.   -  person Mustafa Dokumacı    schedule 26.05.2015
comment
Упс. Я опечатался в своем тесте на сращивание и случайно использовал slice. splice изменяет исходный массив. срез нет.   -  person Cory Danielson    schedule 26.05.2015