将角度数组复制到另一个数组并清除后,它不会保留其值

时间:2019-04-13 07:55:50

标签: angular typescript

我正在创建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进行循环。

2 个答案:

答案 0 :(得分:2)

因为javascript中的数组是一个对象,所以像这样的this.array2 = this.array1意味着this.array2this.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);
  }