2015-12-13 3 views
4

Я пытаюсь создать массив из четырех массивов. Каждый из этих четырех массивов состоит из трех чисел, два из которых случайным образом назначаются из набора чисел.Javascript: Создание массива массивов

Когда я запускаю следующий код, я не получаю сообщение об ошибке, но я также не получаю результата. Что мне не хватает?
я не нужна печать в console.log, это просто проверить, если массив построен правильно

var x = -2; 

function createEnemy(){ 

var yArray = [60,145,230];  
var speedArray = [30,45,55,60]; 

var randY = Math.floor(Math.random() * yArray.length); 
var randSpeed = Math.floor(Math.random() * speedArray.length); 

var enemy = [yArray[randY], speedArray[randSpeed], x]; 

} 


function printEnemies() 
{ 

var allEnemies = []; 
(function setEnemies() 
{ 
allEnemies.push(createEnemy()); 
allEnemies.push(createEnemy()); 
allEnemies.push(createEnemy()); 
allEnemies.push(createEnemy()); 
}()); 


for(var j in allEnemies) 
{ 
for(var p in allEnemies[j]) 
{ 
    for(var i = 0; i < allEnemies[j][p].length; i++) 
    { 
     console.log(allEnemies[j][p][i]); 
    } 
} 
} 

} 

printEnemies(); 

ответ

4

Вы забыли вернуть enemy:)

function createEnemy() { 

    var yArray = [60,145,230];  
    var speedArray = [30,45,55,60]; 

    var randY = Math.floor(Math.random() * yArray.length); 
    var randSpeed = Math.floor(Math.random() * speedArray.length); 

    var enemy = [yArray[randY], speedArray[randSpeed], x]; 

    return enemy; 
} 
1

Обязательно верните что-то от createEnemy:

return [yArray[randY], speedArray[randSpeed], x]; 

Кроме того, вы можете предпочесть что-то вроде этого цикла, чтобы вложенные один вы реализованные:

allEnemies.forEach(function (arr) { 
    console.log(arr[0], arr[1], arr[2]); 
}); 
1

Похоже, что вы не нашли «возвращения врага» из функции createEnemy и у вас есть ненужный цикл третичного уровня. Вот некоторые измененные строки (с некоторыми обновлениями отступов для удобочитаемости).

КОД:

var x = -2; 

function createEnemy() { 

    var yArray = [60,145,230];  
    var speedArray = [30,45,55,60]; 
    var randY = Math.floor(Math.random() * yArray.length); 
    var randSpeed = Math.floor(Math.random() * speedArray.length); 
    var enemy = [yArray[randY], speedArray[randSpeed], x]; 
    return enemy; // Added a return of the enemy. 

} 


function printEnemies() { 

    var allEnemies = []; 
    (function setEnemies() { 
    allEnemies.push(createEnemy()); 
    allEnemies.push(createEnemy()); 
    allEnemies.push(createEnemy()); 
    allEnemies.push(createEnemy()); 
    }() 
); 

    for(var j in allEnemies) { 
    for(var p in allEnemies[j]) { 
     console.log (allEnemies [j][p]); // Removed additional depth of loop 
    } 
    } 

} 

printEnemies(); 
Смежные вопросы