2

我有一系列图像

var prizeImage;

//this is a dynamic amount
var result = 55; 

//the length of this array will change. Images will be added/removed
var prizeImageArray = ['image1.png','image2.png','image3.png','image4.png'] 


//I want to avoid having to type each of these if statements. 
if(result < 25){
    prizeImage = prizeImageArray[0];
}
if(result > 26 && result < 50){
    prizeImage = prizeImageArray[1];
}
if (result...)//and so on

上面是可怕的代码。

我想要一种允许奖品图像数组更改大小并避免键入每个 if 语句的方法。

我希望这是有道理的,我有一种感觉,它没有。

4

3 回答 3

9

如果我理解您的要求,您希望获得一个百分比(从 0 到 100)并找出数组中的哪个图像最接近该百分比位置并获取该图像 URL。如果是这样,您可以通过将百分比除以 100 将其转换为十进制百分比,乘以数组的长度,然后将其四舍五入为整数。这将为您提供最接近您的百分比的数组索引。然后,您可以从数组中索引以获取所需的值。

你可以这样做:

function findPercentLocation(array, percent) {
    return(array[Math.round((percent / 100) * (array.length - 1))]);
}

var prizeImageArray = ['image1.png','image2.png','image3.png','image4.png'] 
var imageSrc = findPercentLocation(priceImageArray, 27);

如果你想让它更健壮,你可以像这样防止超出 0-100 范围的百分比值,这将避免超出数组的范围:

function findPercentLocation(array, percent) {
    if (percent < 0) percent = 0;
    if (percent > 100) percent = 100;
    return(array[Math.round((percent / 100) * (array.length - 1))]);
}
于 2012-04-23T15:28:35.410 回答
0

您编写的代码与值 25 或 26 不匹配。

试试这个,你可以从百分比中加或减一个来得到准确的结果。

return prizeImageArray[Math.floor(percent/25)];
于 2012-04-23T15:32:45.247 回答
-3

最简单的解决方案是使用模运算符。我从来没有写过 JavaScript,但我想下面的代码在语法上是正确的。

prizeImage = prizeImageArray[result % 25];
于 2012-04-23T15:31:53.470 回答