#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);
}