2013-02-14 38 views
0

我有一個基於網格的遊戲8格8格,總共64格,這些格式存儲在一個數組中。我遇到了一個問題,即某些網格廣場正在填充兩次,因此我需要檢查數組是否有重複的座標。檢查一個xy網格座標的數組並重復刪除

下面的代碼給出了每個部分的x,y網格座標 - testX和testY,我不知道如何去通過這個數組來運行去除重複。如果有重複的部分,我需要保持第一次遇到並刪除任何後續重複。如果有幫助,我正在使用jQuery。

function checkGrid() { 

    var x; 

    for (x = 0; x < grid.length; x++) { 

    var testY= grid[x].getY(); 
    var testX = grid[x].getX(); 

    } 
} 
+0

什麼是'grid'? – 2013-02-14 04:10:01

+0

抱歉,網格是一個對象數組,getX和getY是函數從對象檢索x,y協調的 – mao 2013-02-14 04:11:55

+0

所以'grid'是行的對象?或列?你的代碼有什麼問題? – 2013-02-14 04:13:31

回答

1

你可以考慮使用一個對象而不是一個數組:

var grid = {}; 

function setGridValue(x,y, value){ 
    var key = x + '-' + y; 
    grid[key] = value; 
} 

function getGridValue(x,y){ 
    var key = x + '-' + y; 
    return grid[key]; 
} 

這樣的事情。然後,如果您更改網格位置的值,則不需要檢查重複項。

編輯。

由於您無法更改爲對象,因此在插入對象時應找到現有項目。您沒有發佈將代碼添加到網格的代碼,但是您可以這樣做:

function setItem(x, y, value){ 
    var item; 
    // check for existing item in array 
    for(var i = 0; i < grid.length; i++){ 
     if(grid[i].getX() === x && grid[i].getY() === y){ 
      item = grid[i]; 
      break; 
     } 
    } 
    // if no existing item, create new one 
    if(!item){ 
     item = new GridItem(x,y,value); // dont know what is in the grid... 
     grid.push(item); 
    } else { 
     // update existing item here... 
    } 
} 
+0

謝謝@Paul Hoenecke,我確信在開始時使用數組有一個很好的理由,但我不知道它是什麼,現在我不能改變它。 – mao 2013-02-14 04:26:05

+0

@mao更新...希望它有幫助。 – 2013-02-14 04:48:41

+0

確實如此,謝謝。 – mao 2013-02-14 05:00:31