我可能会以完全错误的方式进行此操作,但是在伪代码方面,这是我想做的事情:
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;
}