2016-05-13 55 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

相關問題