Javascript/Typescript array.map 函数正在更改在 .map 之前定义的变量的值



我正在玩一些反应代码,并观察到意想不到的(对我来说(行为。有人可以解释一下发生了什么吗?

export default function AnswerBox(props: any) {
const before = props.answers;
console.log('const before ', before);
props.answers.map((value: any) => {value.selected = 'asdfasdfasdf'})
console.log('answer props after' , props.answers);

两个日志行都显示了一个带有"selected":'asdfasdfasdf' 的对象数组

我在这里错过了一些棘手的异步业务吗?提前谢谢。

对于包含其他对象或数组的对象和数组,复制这些对象需要深层复制。 否则,对嵌套引用所做的更改将更改嵌套在原始对象或数组中的数据,此处为代码:

const before=JSON.parse(JSON.stringify(props.answers));

如果您有复杂的对象,包括日期、函数、未定义、无穷大、[NaN]、正则表达式、映射、集、blob、文件列表、图像数据、稀疏数组、类型化数组。

我会建议我们。

最新更新