Как я могу остановить бесконечность ie l oop в моем коде? - PullRequest
0 голосов
/ 27 марта 2020

Так что я новичок в этом, и я пытаюсь создать скользящую головоломку в реакции, пока у меня есть массив, который я пытался перетасовать, где l oop и я использовал loda sh для разделения массив на четыре. Но мне нужно остановить этот l oop, который работает на newArr, любой, кто может помочь мне понять, как это сделать?

Когда я обновляю страницу newArr, она запускается несколько раз, а также, когда я тасую доска плиток с shuffle btn, как мне написать так, чтобы getShuffledArr запускался только один раз при обновлении или перемешивании?

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>

1 Ответ

0 голосов
/ 27 марта 2020

Поскольку вы уже используете loda sh, вы можете использовать метод _.shuffle(arr). https://lodash.com/docs/4.17.15#shuffle

...