在javascript中搜索精确匹配的多维坐标数组

Searching a multi-dimensional array of coordinates for an exact match in javascript

本文关键字:坐标 数组 javascript 搜索      更新时间:2023-09-26

我有一个坐标点数组,我使用它来运行动画,并希望获得图像的当前位置,并确定该位置的数组的索引。

var pointArray = [{x:70, y:500},
    {x:120, y:500},
    {x:150, y:500},
    {x:178, y:488},
    {x:193, y:465},
    {x:205, y:440},
    {x:228, y:418},
    {x:255, y:408},
    {x:286, y:405},
    {x:317, y:410},
    {x:345, y:422},
    {x:372, y:438}];

pointArray[indexOf(player1.x)]pointArray[indexOf("{x:70, y:500}")]都返回-1,这是未找到搜索词时的默认值。搜索多维数组的正确语法是什么?

注意:上面的点数组是一个精简版本,但在完整版本中坐标确实有重复的x或y值,所以我需要做的不仅仅是搜索2个坐标值中的1个。

您将不得不进行自定义搜索,因为您的新对象(indexOf()的参数)与数组中的对象不同(当然,除非您有对您试图搜索的对象的引用)。

一个简单的方法是…

var match = {x:70, y:500};
for (var i = 0; i < pointArray.length; i++) {
     if (match.x == pointArray[i].x && match.y == pointArray[i].y) {
         break;
     }
}

现在,i将是发现结果的索引。