如何在Javascript

时间:2016-05-13 17:45:50

标签: javascript arrays function

这个错误让我困扰了大约2个小时......我正在制作一个闲置的游戏,你可以拥有自己的城市,我现在正在制作一个建筑系统,问题是每当我删除游戏时都会崩溃从数组(我有构建队列,其中包含要构建的建筑物,然后删除它们)构建从构建队列。我尝试了.shift .pop .push .indexOf(0) === 0[0] === ""以及.splice(1,1)它就像.splice不是函数或.pop是不是所有人的功能。

没有任何效果。请帮忙!

  if (buildValue === 100 && buildQueue.indexOf("house") === 0){
    populationmax++;
    // here i need a command that will remove first element from array called buildQueue.
    buildValue = 0;
  }

2 个答案:

答案 0 :(得分:1)

从数组中删除

if (buildValue === 100 && buildQueue.indexOf("house") === 0){
  populationmax++;
  buildQueue.splice(0, 1); //removes first element
  buildValue = 0;
}

JS代码段

x = [1, 2, 3];
alert(x); //1,2,3
x.splice(0, 1);
alert(x); //2,3

添加/创建数组

首先,您不需要在buildQueue数组中放置一个空字符串,这实际上可能会在以后出现问题,只需执行此操作:

buildQueue = [];

其次,您正在尝试使用+=将字符串添加到数组中,就像它是字符串一样。但是,这样做是将数组转换为字符串,这就是为什么你得到关于`.splice()'的警告,你需要像这样添加字符串给你的数组:

buildQueue.push(someString);

这种方式buildQueue将保留一个字符串数组。

答案 1 :(得分:0)

var buildValue = 0,
    buildQueue = [""],
    buildSpeed = 1/200;
  if (buildQueue[0]){
    buildValue += buildSpeed;
  }
  if (buildValue >= 100){
    buildValue = 100;
  }
  if (buildValue === 100 && buildQueue.indexOf("house") === 0){
    populationmax++;

    buildValue = 0;
  }
  if (buildValue === 100 && buildQueue.indexOf("big house") === 0){
    populationmax+=4;

    buildValue = 0;
  }
  if (buildValue === 100 && buildQueue.indexOf("gold storage") === 0){
    goldmax++;

    buildValue = 0;
  }
  if (buildValue === 100 && buildQueue.indexOf("food storage") === 0){
    foodmax++;

    buildValue = 0;
  }
  if (buildValue === 100 && buildQueue.indexOf("wood storage") === 0){
    woodmax++;

    buildValue = 0;
  }
  if (buildValue === 100 && buildQueue.indexOf("stone storage") === 0){
    stonemax++;

    buildValue = 0;
  }
  if (buildValue === 100 && buildQueue.indexOf("iron storage") === 0){
    ironmax++;

    buildValue = 0;
  }

  buildSpeed = 0.2;

这就是我与构建有关的全部内容。此外,如果您购买建筑物,它只会添加到阵列。例如,黄金存储将添加buildQueue += "gold store";并且ifs内的行之间的空格应该具有删除[0]元素的命令。