Сравнительные задания в React Практическое руководство - PullRequest
0 голосов
/ 09 января 2020

В практическом уроке в разделе «Объявление победителя» был показан этот код:

function calculateWinner(squares) {
  const lines = [
    [0, 1, 2],
    [3, 4, 5],
    [6, 7, 8],
    [0, 3, 6],
    [1, 4, 7],
    [2, 5, 8],
    [0, 4, 8],
    [2, 4, 6],
  ];
  for (let i = 0; i < lines.length; i++) {
    const [a, b, c] = lines[i];
    if (squares[a] && squares[a] === squares[b] && squares[a] === squares[c]) {
      return squares[a];
    }
  }
  return null;
}

Это игра ti c -ta c, и я не сделал этого понять, как работает сравнение (я понимаю конечный результат, но не процесс). Может ли кто-нибудь просветить меня?

Ответы [ 2 ]

2 голосов
/ 09 января 2020

Позволяет разорвать условие и анализировать его

if (squares[a] && squares[a] === squares[b] && squares[a] === squares[c]) {
  return squares[a];
}

Вы можете прервать условие, если есть условие && (AND). И условие последовательно. всякий раз, когда он находит условие, возвращает ложное следующее условие или не выполняется. Итак, условия теперь таковы: 1. квадраты [a] 2. квадраты [a] === квадраты [b] 3. квадраты [a] === квадраты [c]

Из вашего кода я могу предположить, что squares - это большой набор array

  1. Как говорит первое условие, квадраты [a] будут искать индекс в массиве больших квадратов и вернуть true, если этот элемент представлен в противном случае следующее условие вообще не выполняется.
  2. Во втором условии сравниваются значения, присутствующие в массиве квадратов для индексов a и b. как квадраты [0] === квадраты [1]. это может быть равно или нет, это зависит от массива квадратов у вас есть. Если второе условие не выполняется, третье условие вообще не будет выполнено.
  3. То же, что и условие 2, выполняется условие 3, где сравниваются значения массива квадратов с индексом b и c.

Надеюсь, это понятно. Для лучшего понимания распечатайте массив квадратов и проверьте его.

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

было бы намного лучше, если бы они объяснили так: в игре на ti c -поле [a] могут быть X или O, если квадраты [a] = X или O и не NULL, они будут сравнивать квадраты [a] === квадраты [b] и квадраты [a] === квадраты [c]

Если сравнение соответствует одному и тому же XXX или OOO, у вас есть победитель, если они XOX, оно будет проигнорировано: нет выигрыша / нет соответствия.

Я изо всех сил пытаюсь понять кодирование, потому что иногда я не могу найти объяснение с причиной, почему оно было так закодировано. Может быть, это проблема языка Engli sh, я начну искать на своем родном языке o /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...