Случайный набор фиксированного размера в React - PullRequest
0 голосов
/ 19 апреля 2020

Я работаю над получением случайного массива из файла. json в React. Я использую это, чтобы сделать карты, и хочу, чтобы карт было ровно 16 карт, где каждое число отображается дважды. Я использую Set, чтобы сохранить его уникальность, затем создаю массив, но не могу понять, как вызвать l oop, чтобы завершить его, когда размер набора равен 8. На данный момент у меня это сложно кодируется как восемь, но если есть дубликат, набор оказывается слишком маленьким, что я понимаю почему. Кажется, у l oop нет доступа к размеру Set, но я не знаю, как это сделать. Я попытался this.state.practiceCards.size < 8, но это не сработало.

Как мне закончить l oop?

  constructor(props) {
    super(props); 
      this.state = {
        cards,
        practiceCards: new Set(),
        practiceCardsArray: [],
      }
      this.addPracticeCard = this.addPracticeCard.bind(this);
  }

  componentDidMount() {
    this.addPracticeCard();
  }

  addPracticeCard() {
    for (let i = 0; i < 8; i++){
      const randIndex = Math.floor(Math.random() * cards.length);
      this.setState(state => ({
          practiceCards: state.practiceCards.add(cards[randIndex]),
          practiceCardsArray: [...state.practiceCards, ...state.practiceCards]
      }))
    }
  }

1 Ответ

0 голосов
/ 21 апреля 2020

разобрался ..

  componentDidMount() {
    this.generatePracticeCards();
  }

  generatePracticeCards() {
    for (let i = 0; this.state.practiceCards.size < 8; i++){
      this.addRandomCard();
    }
  }

  addRandomCard() {
    const randIndex = Math.floor(Math.random() * cards.length);
    this.setState({ practiceCards: this.state.practiceCards.add(cards[randIndex]) })
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...