下午好,帮我使用 JavaScript 找到页面上最近的元素。现在我只找到 X 最接近的元素。一个得分为 75 的机器人会跑起来,因为 X 更接近它,但实际上,页面上完全不同的元素更接近(右边的硬币)。这是代码:
const closest = (a,g) => a.reduce((p,c) => Math.abs(c-g) < Math.abs(p-g) ? c : p);
let botPositionX = parseInt(64);
let botPositionY = parseInt(64);
const data = [{x: 500, y: 285}, {x: 200, y: 324}, {x: 700, y: 200}];
const dataX = [500, 200, 700];
const dataY = [285, 324, 200];
const rightOrLeft = closest(dataX, botPositionX);
const topOrBottom = closest(dataY, botPositionY);
let found = data.find((loc) => {
return loc.x === rightOrLeft;
});
let coinPosX = parseInt(found.x);
let coinPosY = parseInt(found.y);
你需要在一条直线上找到距离,给定X和Y中的位置。通过坐标找到长度的公式:
длина отрезка² = (y2 - y1)² + (x2 - x1)²
在JS中,它看起来像这样: