@rinatoptimus

Почему перезаписывается массив?

Есть цикл

arr = [];
......
......
this.httpService.getList().subscribe(data => 
      {
        this.arr = data;
        for(let i=0; i<this.arr.length; i++) {
          this.arr.push(this.arr[i]);
          // this.arr = [];
        }
      }
    );

Вопрос в заголовке.
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
rockon404
@rockon404
Frontend Developer
А вы что сделать хотели?
Ваш цикл никогда не закончится, так как вы постоянно добавляете элементы в массив. Перед каждой итерацией идет проверка:
i < this.arr.length
А у вас и i и this.arr.length после каждой итерации на 1 увеличиваются и как следствие this.arr.length всегда больше.

Возможно вы хотели сделать, что-то вроде этого:
this.httpService.getList().subscribe(data => {
  this.arr = [...this.arr, ...data];
});

или:
this.httpService.getList().subscribe(data => {
  this.arr = this.arr.concat(data);
});


Если важно расширять старый массив, а не возвращать новый то:
this.httpService.getList().subscribe(data => {
  data.forEach(el => this.arr.push(el));
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы