You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何判断数组对象属性与目标值的差值是否小于100

坐标接近判断实现方法

你需要的遍历判断逻辑可以按如下方式实现,注意两个核心要点:

  • 计算坐标差值必须用Math.abs()取绝对值,避免目标坐标比数组内坐标小的时候差值为负,导致小于100的判断失效
  • 必须同时满足x轴、y轴差值都小于100,才符合坐标接近的要求

基础循环实现(逻辑最直观)

直接遍历数组每一项,计算差值做判断,找到符合条件的项可以直接终止循环,减少不必要的计算:

let existNearEnemy = false;
for (const item of myArr) {
  const xGap = Math.abs(nearestEnemy.x - item.x);
  const yGap = Math.abs(nearestEnemy.y - item.y);
  if (xGap < 100 && yGap < 100) {
    existNearEnemy = true;
    break;
  }
}

if (existNearEnemy) {
  // 此处写匹配到接近坐标后的业务逻辑
}

数组方法简写实现

用数组原生的some()方法可以更简洁地实现判断,该方法会在找到第一个符合条件的项时自动停止遍历,返回布尔值:

const existNearEnemy = myArr.some(item => {
  return Math.abs(nearestEnemy.x - item.x) < 100 
    && Math.abs(nearestEnemy.y - item.y) < 100;
});

if (existNearEnemy) {
  // 匹配成功后的逻辑
}

如果需要拿到匹配到的具体坐标对象,而不只是判断是否存在,可以替换为find()方法:

const nearTarget = myArr.find(item => {
  return Math.abs(nearestEnemy.x - item.x) < 100 
    && Math.abs(nearestEnemy.y - item.y) < 100;
});

if (nearTarget) {
  // 可以直接访问nearTarget.id、nearTarget.x、nearTarget.y做后续处理
}

注意:不要直接写nearestEnemy.x - item.x < 100,如果nearestEnemy.x比item.x小,差值会是负数,永远满足小于100的条件,判断逻辑会完全出错。

内容的提问来源于stack exchange,提问作者W4IT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 20:27:21