Привет, милые технари,

При создании пользовательской карты бинго в React JS мне приходилось перетасовывать (5 * 5 = 25 ячеек) игровое поле каждый раз, когда игра обновлялась, т.е. когда компонент монтировался, используя хук componentDidMount().

Это была следующая слегка модифицированная функция Фишера-Йейтса, которую я придумал, обратите внимание, что ячейка с индексом 12 (средняя ячейка) не была кликабельной, статической и должна была быть частью индексов выигрышных комбинаций.

export function shuffleArray(array, n) {
let i = array.length - 1;
for (; i > 0; i--) {
  let j = Math.floor(Math.random() * (i + 1));
  if(i === n || j === n) continue;
  let temp = array[i];
  array[i] = array[j];
  array[j] = temp;
}
  return array;

}

// n был порядковым номером, который не предназначался для перемешивания

// перетасовывать доску, за исключением средней индексированной ячейки, каждый раз, когда компонент монтируется

componentDidMount() {              
  const shuffledPosts = shuffleArray(this.state.board, 12)      
    this.setState({
      board: shuffledPosts
    }); 
}

Надеюсь, это помогло