这是我的第一个问题,如果我有什么问题,请原谅我。
我有一个组织为对象的坐标数组,我需要查找并删除某个对象。我一直试图通过数组中的特定 x 和 y 坐标来获取对象的位置。
这是我到达的地方:
door_array = [{x:3, y:4},{x: 12,y: 12}, {x: 15,y:15}];
function remove_door(dx,dy, array)
{
var obj = {x:dx,y:dy};
var a = door_array.indexOf(obj); //this part doesn't work
door_array.slice(a,1)
}
当我尝试调用该函数时,它似乎将数组读取为 [object,object,object],并返回 -1。
问题是,如何通过特定对象的坐标找到其位置,以便将其删除?
最佳答案
问题是 obj
是与列表中的对象不同的对象。您应该循环遍历列表中的对象,直到找到所需的对象。例如。
door_array = [{x:3, y:4},{x: 12,y: 12}, {x: 15,y:15}];
function remove_door(dx,dy, array)
{
var index = -1;
for(var i = 0; i < array.length; i++)
{
if(array[i].x == dx && array[i].y == dy)
{
index = i;
break;
}
}
if(index != -1)
{
array.slice(index,1);
}
return array;
}
完成操作后,您应该返回数组。像这样调用:
door_array = remove_door(x, y, door_array);
关于Javascript如何查找数组中对象的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26871382/