【发布时间】:2021-05-19 22:16:47
【问题描述】:
我有一个问题大约 3 个小时,我不明白为什么,
下面的代码应该可以解释我的问题:
import {useEffect} from 'react'
function shuffle(tab) {
console.table(tab) //shows initialdata
var i, j, tmp;
for (i = tab.length - 1; i > 0; i--) {
j = Math.floor(Math.random() * (i + 1));
tmp = tab[i];
tab[i] = tab[j];
tab[j] = tmp;
}
return tab;
}
function App() {
useEffect(() => {
const initaldata = [{a:1}, {a:2}, {a:3}, {a:5}]
console.table(initaldata) //shows initialdata
const finaldata = initaldata
console.table(shuffle(finaldata)) //shows initialdata shuffled
console.table(initaldata) //shows initialdata shuffled, why ?
}, [])
return null;
}
我在一个函数中尝试了多种解决方案,例如孤立的“shuffle(initialdata)”。
shuffle 函数更新我的所有变量这一事实使我的所有代码都无法正常工作。
谢谢你,我希望你能找到解决办法。 (如果有错误请见谅,我是法语)
【问题讨论】:
-
shuffle改变原始数组。 -
引用调用,深度克隆shuffle函数中的args,
tab = tab.slice()
标签: javascript json reactjs react-hooks