从数组中移除对象范围内的对象

时间:2017-04-10 16:23:56

标签: javascript html arrays

我有一个敌人对象数组,我想检查x和y位置是否在彼此的10个像素内,以及它们是否将它们删除。我的方法似乎是删除所有我不知道出了什么问题。

function checkEnemyPos()
{
    for (var i =0; i < enemys.length; i ++)
    {
        for (var j =0,len = enemys.length; j <len; j ++)
        {
            var xRange = Math.abs(enemys[j].x - enemys[i].x);
            var yRange = Math.abs(enemys[j].y - enemys[i].y);


            if (xRange < 10 && yRange < 10)
            {
                enemys.splice(j, 1);
                j--;
                len--;
            }
        }
    }
};

1 个答案:

答案 0 :(得分:1)

你可以调整循环,外部循环从零到长度-1,内部循环从i + 1调整到数组的长度。

  

[0, 1, 2, 3, 4, 5, 6]

的示例
   0  1  2  3  4  5  i
1  x                       x = check
2  x  x
3  x  x  x
4  x  x  x  x
5  x  x  x  x  x
6  x  x  x  x  x  x
j
function checkEnemyPos() {
    for (var i = 0; i < enemys.length - 1; i++) {
        for (var j = i + 1; j < enemys.length; j++) {
            var xRange = Math.abs(enemys[j].x - enemys[i].x);
            var yRange = Math.abs(enemys[j].y - enemys[i].y);

            if (xRange < 10 && yRange < 10) {
                enemys.splice(j, 1);
                j--;
            }
        }
    }
}