微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

克隆一个数组并使其唯一 - Javascript

如何解决克隆一个数组并使其唯一 - Javascript

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

我尝试了以下方法

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

解决方法

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

所以,你需要做的是一个深度克隆。 这不是深度克隆的完美方式,但看起来您可以使用 let excelData = JSON.parse(JSON.stringify(this.state.tableData));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。