如何停止代码中的无限循环?
How can I stop a infinitie loop in my code?
所以我是新手,我试图在 React 中创建一个滑动拼图,到目前为止,我有一个数组,我试图将其打乱,循环所在的位置,我使用 lodash 将数组分成四个.
但是我需要停止在 newArr 上 运行ning 的循环,任何人都可以帮助我理解如何做到这一点?
当我更新页面 newArr 时,它是 运行 多次,当我用 shuffle btn 洗牌时,我该如何写才能让 getShuffledArr 仅 运行s一旦更新或随机播放?
const sortedArray = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
const getShuffledArr = () => {
const newArr = sortedArray.slice();
for (let i = newArr.length - 1; i > 0; i--) {
const rand = Math.floor(Math.random() * (i + 1));
[newArr[i], newArr[rand]] = [newArr[rand], newArr[i]];
console.log("newArr", newArr);
}
let newPuzzle = newArr
return newPuzzle
};
const newPuzzle = getShuffledArr()
// this gives four arrays of the shuffled one
const newPuzzleArr = () => {
let puzzleArr = _.chunk(newPuzzle, 4)
console.log("getNewArray", puzzleArr);
return puzzleArr
}
newPuzzleArr()
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.js"></script>
既然你已经在使用 lodash 那么你可以使用 _.shuffle(arr)
方法。
https://lodash.com/docs/4.17.15#shuffle
所以我是新手,我试图在 React 中创建一个滑动拼图,到目前为止,我有一个数组,我试图将其打乱,循环所在的位置,我使用 lodash 将数组分成四个. 但是我需要停止在 newArr 上 运行ning 的循环,任何人都可以帮助我理解如何做到这一点?
当我更新页面 newArr 时,它是 运行 多次,当我用 shuffle btn 洗牌时,我该如何写才能让 getShuffledArr 仅 运行s一旦更新或随机播放?
const sortedArray = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
const getShuffledArr = () => {
const newArr = sortedArray.slice();
for (let i = newArr.length - 1; i > 0; i--) {
const rand = Math.floor(Math.random() * (i + 1));
[newArr[i], newArr[rand]] = [newArr[rand], newArr[i]];
console.log("newArr", newArr);
}
let newPuzzle = newArr
return newPuzzle
};
const newPuzzle = getShuffledArr()
// this gives four arrays of the shuffled one
const newPuzzleArr = () => {
let puzzleArr = _.chunk(newPuzzle, 4)
console.log("getNewArray", puzzleArr);
return puzzleArr
}
newPuzzleArr()
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.js"></script>
既然你已经在使用 lodash 那么你可以使用 _.shuffle(arr)
方法。
https://lodash.com/docs/4.17.15#shuffle