当我更改对象数组中的一个值时,为什么所有值都会改变?打字稿

时间:2017-11-05 18:03:43

标签: arrays loops typescript for-loop

sortDates(){      
    let index = 0;    
    for(let year of this.yearList){          
        let yearInfo = this.yearInfo;
        this.year.push(yearInfo)         
        index++;         
    }
this.year[2].year = '123'

对战

sortDates(){      
    let index = 0;    
    for(let year of this.yearList){          
        let yearInfo {
        year: '',
        info: [
          {
            date:'Dec',
            total: 0
          },
          {
            date:'Nov',
            total: 0
          },
          {
            date:'Oct',
            total: 0
          }         
        ]
    };
        this.year.push(yearInfo)         
        index++;         
    }

第二个允许我改变'年'的值。不改变所有元素。第一个将每个元素更改为相同的值。

示例:如果2016年是for循环中的最后一个值,那么数组中的所有值都将是2016年'年'

0:{year: "123", info: Array(12)}
1:{year: "123", info: Array(12)}
2:{year: "123", info: Array(12)}

对战

0:{year: "", info: Array(12)}
1:{year: "", info: Array(12)}
2:{year: "123", info: Array(12)}

有没有更好的方法来获得第二个结果?为什么第一个结果会发生?谢谢!

编辑:使用Object.assign帮助

0 个答案:

没有答案