Ex из того, что я хочу, чтобы он выводил: Dice.rollNDice(6) => [x, x, x, x, x, x] или Dice.rollNDice(3) => [x, x, x]
Я знаю, что вторая часть моего кода ошибочна, но я не уверен, как ее исправить или что еще добавить к ней. Но мне нужно вызвать rollDie и вернуть массив, представляющий рулоны
rollDie: function() {
return Math.floor(Math.random() * this.sides) + 1;
},
rollNDice: function(n) {
rollDie(var result = [];
for (var i =0,i<=[/1-6/] ;i++)
)
Решение
Я могу сказать, что вы новичок в этом языке. Зачем? Позвольте мне прокомментировать все ваши ошибки, которые вы сделали: (я исправил некоторые ваши отступы)
rollDie: function() { // Unexpected parenthesis: this is not how you define a
// function. Define a function by doing 'function rollDie()'
return Math.floor(Math.random() * this.sides) + 1; // incorrect method of random
}, // remove comma
rollNDice: function(n) { // Same here: 'function rollNDice(n) {...}'
rollDie(var result = []; // -.-
for (var i =0,i<=[/1-6/] ;i++) // incorrect usage of for statement .-.
// ^ ^
// bad formatting ????? ._.
) // unexpected parenthesis ._.
// missing bracket from rollNDice ._.
Я покажу вам правильное использование Заявления:
for (var i = 0; i > n i++) { // (var i; while i is greater than n; increment i)
// do stuff
}
Теперь я покажу вам, как получить случайное число от 1 до 6:
Math.floor((Math.random() * 6) + 1);
Почти готово. Теперь измените функцию rollDie. Вместо rollDie: function()..., я поменяю его на функцию rollDie(). Неожиданные скобки foo: function()...
с foo: function()...
Он отформатирован как function foo()
. Но вы должны быть новичком в этом языке.
function rollDie() {
return Math.floor((Math.random() * 6) + 1);
}
function rollNDice(n) {
...
}
Теперь определение переменной внутри параметра - это плохая практика, насколько я знаю. Или, по крайней мере, я не вижу его так часто, кроме как (var i...). Поместите результат в начало: var result = []
. Теперь для заявления For.
for (var i = 0; i > n-1; i++) {
result.push(rollDie()); // result.push(3) returns [3], and if
} // result is [5, 4, 2], result.push(4)
return result // makes it result[5, 4, 2, 4]
И это работает! Я покажу тебе:
function rollDie() {
return Math.floor((Math.random() * 6) + 1);
}
function rollNDice(n) {
var result = ["results:"];
for (var i = 0; i < n; i++) {
result.push(rollDie());
}
return result;
}
console.log(rollNDice(4));
["result", 6, 1, 6, 5]
; оно работает!Ваш синтаксис неверен.
Поскольку rollDie
является свойством, вы должны называть его Dice.rollDie()
. Вы не помещаете цикл for
внутри списка аргументов функции, вы вызываете функцию внутри цикла for. И так как вы хотите вернуть массив всех рулонов, вам нужно построить массив.
rollNDice: function(n) {
var dice = [];
for (var i = 0; i < n; i++) {
dice.push(Dice.rollDie());
}
return dice;
}