我可能会以完全错误的方式进行此操作,但是在伪代码方面,这是我想做的事情:

ranges = new Array([0 - 400] = 'dog',
               [401 - 1000] = 'cat',
               [1001 - 1233] = 'rat');

alert(ranges[243]);

并神奇地在屏幕上弹出“狗”。现在,我知道您不能做那么简单的事情,但是我完全不知道如何做这样的事情(不循环遍历数组,不对值执行>和
有任何想法吗? :)

最佳答案

这是一个非常简单明了的方法-尽管它假定您不希望在范围内出现“漏洞”。此示例中没有错误处理,但实际上您只需要传递上限,下限是隐式的。

function test() {
    var array = MakeRangeArray([500,1000,2000], ['dog', 'cat', 'rat']);

    alert (array[243]);
    alert (array[500]);
    alert (array[501]);
}

function MakeRangeArray(upperBounds, values) {
   var rangeArray = new Array(upperBounds[upperBounds.length-1]);

   var idx = 0;
   for (var i=0; i < rangeArray.length; i++) {
      if (i > upperBounds[idx]) {
        idx++;
      }
      rangeArray[i] = values[idx];
   }
   return rangeArray;
}

09-28 01:13