用于检查两个数字之间的逻辑

Joh*_*ohn 1 javascript

我想确定区域被赋予任意数字的位置.

zones = [0, 150, 300, 400, 600, 800]

function checkZone(mouseX) {
    // if mouseX is 321, it should be index 2 of zones array
}
Run Code Online (Sandbox Code Playgroud)

pax*_*blo 5

您可以使用以下循环来执行此操作.我已经包含了整个页面用于测试目的.

<html>
    <body>
        <script type="text/javascript">
            var i; var y = 0; var val = 321; var zones = [0,150,300,400,600,800];
            for (i = 0; i < zones.length; i++)
                if (val >= zones[i])
                    y = i;
            document.write("Value " + val + " is at position " + y);
        </script>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

使用各种测试数据:

Value -99 is at position 0 
Value   0 is at position 0
Value 149 is at position 0
Value 150 is at position 1 
Value 321 is at position 2
Value 521 is at position 3
Value 799 is at position 4 
Value 800 is at position 5 
Value 999 is at position 5 
Run Code Online (Sandbox Code Playgroud)

  • 一些特定于JS的注释:`var`在JavaScript中不是真正的可选项,在这个例子中似乎没有任何区别,因为所有标识符都是全局的,但不建议使用,例如,如果你将上面的代码放在一个函数中,标识符仍然是全局的,而且,新的ECMAScript 5 [严格模式](http://j.mp/dzg47V)不允许对未声明的标识符进行分配.另外,`for-in`语句看起来可能与C#,PHP,Perl等中的`foreach`类似,但不是,'for-in`的目的是*枚举*对象属性,查询顺序不保证...... (2认同)
  • ......按规格.因此,可能无法按数字顺序访问属性,此语句也枚举了继承的属性,如果有人扩展了`Array.prototype`对象 - 甚至在某些库(如MooTools)中,这可能会有问题.要在一个数组或类似数组的对象上进行迭代*,一个简单的顺序循环是最好的方法.:) (2认同)