2016-05-13 57 views
0

现在这个错误让我困扰了大约2个小时......我正在制作一个闲置的游戏,您可以拥有自己的城市,我现在正在构建一个建筑系统,问题是游戏崩溃,每当我从数组中删除(我有构建队列,其中持有建筑物建造,然后删除它们)从构建队列建设。我试过.shift.pop.push.indexOf(0) === 0[0] === "".splice(1,1)它只是想出了像.splice不是一个函数,或者.pop并不是一个函数。如何在Javascript中删除我的数组中的条目

没有工作。请帮忙!

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

'arr.splice(indexOfItemToDelete,1)' – Redu

+0

http://stackoverflow.com/questions/369602/delete-an-element-from-an-array?rq=1 –

+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将仍然是一串字符串。

+0

没有工作或者尝试过。它只是带有.shift不是一个函数或任何我使用 – killereks

+0

@ZgniotekMc,我添加了一个片段,也许你测试你的代码错了? –

+0

我不知道,我发誓我使用正确的方式,我之前使用它很多。现在它只是提出.splice不是一个函数。我试图把它放在单独的函数中。我需要快速修复它,因为我坚持这一点,并且无法进一步发展我的游戏。 – killereks

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]元素的命令。

+0

OMG男士谢谢你,我一直在做着正确的事情,但是[“]是错误的。感谢我爱你:D – killereks

相关问题