我正在创建2个数组,第一个具有一些值,第二个为空。在从1st数组分配到2nd数组之后,我要清除1st数组,但同时还要清除2nd数组。
我的代码:
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%2Fapp%2Fapp.component.ts
我不希望array2失去其值,因为在分配了值之后,我想对array2进行循环。
答案 0 :(得分:2)
因为javascript中的数组是一个对象,所以像这样的this.array2 = this.array1
意味着this.array2
和this.array1
都在同一个对象上定位,因此修改任何此变量最终都会导致修改同一对象。使用扩展语法将数组元素从array1
复制到array2
,而不是像这样(stackblitz)将array2
引用到array1
:
this.array2 = [...this.array1];
答案 1 :(得分:0)
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);
}