JavaScript:if语句中的多个数组条件

时间:2014-03-20 03:43:31

标签: javascript

我在这里很新,但是我发布了这个原因我还没有在互联网上找到这个问题的单一答案。

如何使用多个数组作为if语句的条件。我需要这个的原因只是为了创建一个2D游戏。但是我知道即使是简单的2D游戏也会因为所涉及的所有对象而拥有大量的变量。但这是我开始时的一个简单例子。

var a = 27;
var test = 0;

if(a in {18:1, 27:1, 36:1}) {
    test = 1;
}

这将针对一个变量测试变量数组。我发现这回归正确,但这只是战斗的一半。

我唯一能找到这方面的地方就是这里。

  

How to shorten my conditional statements

现在困难的部分是将两个数组作为条件而不仅仅是变量和数组。所以基本上我需要缩短这个想法。

var a = 27;
var b = 27;  
var c = 50;
var test = 0;

if(a in {18:1, 27:1, 36:1} || b in {18:1, 27:1, 36:1} || c in {18:1, 27:1, 36:1}) {  
    test = 1;
}

即使我是一个菜鸟,我的圣经也是黑客的标准:P。这基本上意味着我认为,当我在没有充分理由的情况下反复做某事的过程中创造出一些东西时,它就是魔鬼"(无论是谁获得了参考资料)。所以让我再次解释一下,但非常具体,所以没有混淆。假设我创建了很多NPC(非玩家角色),并且我想要一个可以检测个别NPC是否已经接触过的系统让我们说一个弹丸。我希望那个人消失并给分数板一个点。为这些字符创建函数需要很多if语句。所以理想情况下我想要一个if语句,它以某种方式使用2个或更多数组的条件,但看起来几乎与使用两个变量一样短。

也许看起来像这样。

var test = 0;
var a = [5,6,8];
var b = [10,30,8];

if(a in b){
    test = 1;
}

注意:我实际上已经尝试过这个但它只取b的索引而不是里面的数字。我相信这个话题值得关注,除非已经有人发布了一个解决方案(在这种情况下需要做广告宣传)。

编辑:很长一段时间后,我意识到正确(更有效和可读)的解决方案是使用OOP和游戏引擎设计。我太小了,无法理解如何处理数据。所以对于任何看到这个想知道同样事情的人来说,应该只是尝试更彻底地研究数组和类逻辑。诚实,javascript不是学习这个的地方。我建议前往processing.org。并学习使用课程的方法。如果您遇到麻烦,可以尝试使用openFrameworks并在c ++中学习OOP。但最重要的是理解正确的阵列机制。 OOP只是让它更容易。

1 个答案:

答案 0 :(得分:2)

var test = false;
var a = [5, 6, 8];
var b = { 10:1, 30:1, 8:1 };
for (var i = 0; i < a.length; i++) {
    if (a[i] in b) {
        test = true;
        break;
    }
}

如果您使用的是jQuery或Underscore.js这样的库,它们可以使用$.any()等便捷功能来替换循环。您也可以使用内置的Array#some方法,但它与IE8不兼容。例如:

return a.some(function(x) {
    return x in b;
});