Javascript:创建一个数组数组

时间:2015-12-13 01:54:37

标签: javascript arrays

我正在尝试创建一个包含四个数组的数组。 这四个数组中的每一个都由三个数字组成,其中两个是从一组数字中随机分配的。

当我运行以下代码时,我没有收到错误,但我也没有得到结果。 我错过了什么?
我真的不需要在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();

3 个答案:

答案 0 :(得分: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 :(得分:1)

确保您从$('body').css(...);返回一些内容:

createEnemy

此外,您可能更喜欢这种循环之类的东西,而不是您已实施的嵌套方式:

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

答案 2 :(得分:1)

看起来你错过了一个回归的敌人&#39;来自createEnemy函数,你有一个不必要的三级循环。这里有一些修改过的行(为了便于阅读,有一些缩进更新)。

<强> CODE

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();