【问题标题】:Clone an array and make it unique - Javascript [duplicate]克隆一个数组并使其独一无二 - Javascript [重复]
【发布时间】:2021-05-28 06:57:27
【问题描述】:

我有问题。我有一个对象数组。我需要复制它并使其独一无二,所以当我修改我的新数组时,它不会改变原始数组中的任何内容。

我尝试了以下方法:

let excelData = [...this.state.tableData]; 
let excelData = this.state.tableData.slice();
let excelData = this.state.tableData.concat();
let excelData = Array.from(this.state.tableData);

但是前面列出的所有方法也会修改原始数组。

这是我的功能:

addDynamicExcelColumns() {
        let excelData = [...this.state.tableData];
        if (this.state.compRentAttr.length > 0) {
            excelData.map((d, idx) => {
                this.state.compRentAttr.map((i, idx1) => {
                    excelData[idx][i.AttrName] = d.optionalAttributes[idx1];
                });
            });
        }
        return excelData;
    }

【问题讨论】:

    标签: javascript arrays reactjs copy javascript-objects


    【解决方案1】:

    这是因为您只是在创建一个具有相同元素的新数组。 当你做let excelData = [...this.state.tableData];时,excelData[index]等于this.state.tableData[index]

    因此,您需要做的是深度克隆。 而且它不是深度克隆的完美方法,但看起来你可以使用let excelData = JSON.parse(JSON.stringify(this.state.tableData));

    【讨论】:

      猜你喜欢
      • 2013-10-31
      • 2010-12-22
      • 2017-10-15
      • 2011-04-15
      • 2019-05-09
      • 1970-01-01
      • 2011-06-16
      • 2017-12-01
      • 1970-01-01
      相关资源
      最近更新 更多