Угловой массив не сохраняет свое значение после копирования его в другой и удаления

#angular #typescript

#угловой #typescript

Вопрос:

Я создаю 2 массива, 1-й имеет некоторое значение, а 2-й пуст. После назначения элементов из 1-го во 2-й массив я очищаю 1-й массив, но он также очищает и 2-й массив.

Мой Код:

   array1: any = [1, 2, 3, 4, 5];
  array2: any = [];

  ngOnInit() {
    this.array2 = this.array1;
    this.array1.length = 0;

    console.log('I cleared Array1');
    console.log(this.array1);

    console.log('Array2 Clears Automatically');
    console.log(this.array2);
  }
 

Вот пример Stackblitz:
https://stackblitz.com/edit/angular-yfhdi3?file=src/app/app.component.ts

Я не хочу, чтобы array2 терял свое значение, так как после присвоения значения я хочу выполнить цикл для array2.

Ответ №1:

Поскольку массив в javascript является объектом, выполнение чего-то подобного this.array2 = this.array1 означает, что оба this.array2 и this.array1 указывают на один и тот же объект, поэтому изменение любой из этих переменных в конечном итоге приводит к изменению одного и того же объекта. Используйте синтаксис распространения для копирования элементов массива из array1 в array2 , вместо ссылки array2 на array1 подобное (stackblitz):

 this.array2 = [...this.array1];
 

Ответ №2:

 It will help for you.

 array1: any = [1, 2, 3, 4, 5];
  array2: any = [];

  ngOnInit() {
    this.array2.push(this.array1);
    this.array1 =  [];

    console.log('I cleared Array1');
    console.log(this.array1);

    console.log('Array2 Clears Automatically');
    console.log(this.array2);
  }