Я пытаюсь сделать игру Yahtzee. У меня есть функция, чтобы проверить, не сыграли ли кубики маленькую прямую.Функция Javascript, изменяющая глобальную переменную (массив)
var sortedDice = rollDice().sort(); // rollDice() generates an array with 5 random numbers
Моя функция, чтобы определить, есть небольшой прямой:
function isSmStraight(checkSmStraight){
var smStraight = false;
var i = 1;
var j = 0;
//will remove a die if there are duplicates
while(i < checkSmStraight.length){
if (checkSmStraight[i] == checkSmStraight[j]){
i++;
} else {
j++;
checkSmStraight[j] = checkSmStraight[i];
i++;
}//end if else
}//end while loop that moves duplicates to last index of array
checkSmStraight.pop();//removes last index of array
if (isLgStraight(checkSmStraight) == true){
smStraight = true;
} else if (checkSmStraight.length == 4 && checkSmStraight[checkSmStraight.length-1] - checkSmStraight[0] == 3){
smStraight = true;
}//end if else if
return smStraight;
}//end function isSmStraight()
Я скопировал sortedDice в другой массив, fourDice, что я могу использовать для вызова isSmStraight(). Я хочу, чтобы эта функция использовала только четырехзначный массив, но она всегда беспорядочна с sortedDice, поэтому в остальной части программы используется массив из четырех кубиков. (Это не вся программа, только те части, которые, как я думал, релевантны. Кроме того, программа закончена, я просто пытаюсь сначала получить функции подсчета очков).
Вы должны определить глобальный внешний вид, если ваша функция, например 'var newvar =" "; function test() {newvar = "новый текст"; } ' – Eugen
Вы, вероятно, передаете ссылку, а не новый массив, используйте' .slice() 'для создания копии. – adeneo
Да, глобальные переменные определяются вне функции. Использование .slice() отлично работает. Спасибо как за быстрые ответы. –