gpt4 book ai didi

javascript - 数组自动更改值

转载 作者:行者123 更新时间:2023-11-30 09:11:07 25 4
gpt4 key购买 nike

....
import * as XLSX from 'xlsx';
...

我在 Ionic 4 中读取一个 .xlsx 文件

showData() {
let fileReader = new FileReader();
fileReader.onloadend = (e) => {
this.arrayBuffer = fileReader.result;
let data = new Uint8Array(this.arrayBuffer);
let arr = new Array();
for (let i = 0; i != data.length; ++i) arr[i] = String.fromCharCode(data[i]);
let bstr = arr.join("");
let workbook = XLSX.read(bstr, { type: "binary" });
let first_sheet_name = workbook.SheetNames[0];
let worksheet = workbook.Sheets[first_sheet_name];
let rows = XLSX.utils.sheet_to_json<Income>(worksheet, { raw: true });

this.allIncomesFromDocument = rows
this.Test(rows)
}
fileReader.readAsArrayBuffer(this.file);
}

Test(rows){
this.allIncomesFromDocument.forEach( v => console.log(v.quantity) ) // FIRST LOG

rows.forEach( row =>{
row.quantity = 0;
})

this.allIncomesFromDocument.forEach( v => console.log(v.quantity) ) // SECCOND LOG
}

在我的第一个日志中

8
7
5
9
2
etc.

我在文件中的数据

但我从不更改值,只重复相同的 forEache 和我拥有的日志

0
0
0
ect.

日志完全不同

最佳答案

当你这样做时this.allIncomesFromDocument = 行您实际上是在分配一个引用,而不是复制数据。

这意味着当你这样做时row.quantity = 0;您正在更新引用,这两个变量都是变量。

如果你改变this.allIncomesFromDocument = 行this.allIncomesFromDocument = JSON.parse(JSON.stringify(rows))您将创建数据的完整副本,而不仅仅是分配引用。

关于javascript - 数组自动更改值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58924603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com