Я пытаюсь создать функцию, которая проверяет, имеют ли две колоды карт одинаковый порядок.
Я написал вспомогательную функцию, cardEq, для проверки, являются ли две карты одинаковыми, ионо работает.Он не работает в функции deckEq.
//Card Struct
//value 1 is ace, 11 is Jack, 12 is Queen, and 13 is King
function Card(suit, value, color){
this.suit = suit,
this.value = value,
this.color = color
}
//Check if two Cards are the same
function cardEq(card1, card2){
if(card1.suit === card2.suit
&& card1.value === card2.value
&& card1.color === card2.color){
return true;
} else {return false;}
}
//Check if two Decks/arrays of Cards are in the same order
function deckEq(deck1, deck2){
let i = 0;
let flag = false;
while (i < 53){
let x = deck1[i];
let y = deck2[i];
if(cardEq(x, y) === true){
flag = true;
i = i + 1;
} else {flag = false; break;}
}
return flag;
}
Я ожидал, что он вернет либо true, либо false, но вместо этого выдает ошибку: TypeError: Невозможно прочитать свойство 'suit' undefined в cardEq (repl:2:12) в deckEq (repl: 7: 8)
РЕДАКТИРОВАТЬ: я изменил (i <53) в операторе while на (i <52).Спасибо за улов @Christopher и @ traktor53.Я предполагаю, что проблема заключалась в том, что функция вызывала cardEq для элемента в массиве, который не существует (52-й).Поскольку это предназначено для сравнения колод, оно должно работать только с 51-м элементом (52-й картой). </p>