Javascript 没有正确迭代数组?

标签 javascript arrays for-loop

所以我正在用 Javascript 制作一个类似 roguelike 的小游戏,但我的一段渲染代码出现了错误。不是渲染本身,而是它的一个小子部分,它遍历对象数组,检查是否有任何对象的坐标与 x 和 y 参数匹配,如果坐标匹配则返回对象。

这是给我带来麻烦的代码

Client.Render.checkObjects = function(objects, x, y) {
    for (var a = 0; a < objects.length; a++) {
        if (objects[a].x == x && objects[a].y == y) {
            return objects[a];
        } else {
            return false;
        }
    }
};

我有一个名为 testSnap.objects 的对象数组,我是这样制作的:

function testObject(x, y) {
    this.x = x;
    this.y = y;
    this.symbol = "a";
};
testSnap.objects.push(new testObject(5,5));
testSnap.objects.push(new testObject(3,5));

然后我试试

console.log(Client.Render.checkObjects(testSnap.objects, 5, 5));
console.log(Client.Render.checkObjects(testSnap.objects, 3, 5));

哪个返回:

Object { x: 5, y: 5, symbol: "a" }
false

似乎 objects[a] 永远不是 objects[1]

最佳答案

如果第一个 对象匹配,您只会返回一个对象。如果没有,您将立即返回 false。尝试:

Client.Render.checkObjects = function(objects, x, y) {
  for (var a = 0; a < objects.length; a++) {
    if (objects[a].x == x && objects[a].y == y) {
        return objects[a];
    }
  }

  // NOW return false if we never matched
  return false;
};

关于Javascript 没有正确迭代数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23681764/

相关文章:

javascript - Meteor 集合排序未按预期工作

javascript - ReactJS 中的过滤器嵌套对象

javascript - 将样式应用于购物 list 中新创建的元素

在 C 中将二维数组中的单个元素复制并比较到另一个数组

c++ - 根据用户输入从一系列数字中找到一个完美的数字

javascript - 使用 for 循环、break 和 continue 查找字母 "x"在句子中出现的次数

javascript - ng-options 嵌套在 ng-repeat 中

c - 这个指针示例如何不产生错误?

java - 求两个元素之和的最小绝对值

c - 赋值给数组类型错误的表达式