检查x y网格坐标数组是否有重复项并删除

时间:2013-02-14 03:57:33

标签: javascript jquery arrays duplicate-removal

我有一个基于网格的游戏,8个方格,8个方格,总共64个,这些棋子存储在一个数组中。我有一个问题,某些网格方块正在填充两次,所以我需要检查数组是否有重复的坐标。

下面的代码给出了每个部分的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();

    }
}

1 个答案:

答案 0 :(得分: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];
}

像这样的东西。然后,如果更改网格位置的值,则无需检查重复项。

EDIT。

由于无法更改为对象,因此在插入现有项时应该找到它。您没有发布将项目添加到网格的代码,但是您可以执行以下操作:

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...
   }
}