Javascript 基于百分比查找任意长度数组中的项

Javascript 基于百分比查找任意长度数组中的项,javascript,Javascript,我有一组图像 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

我有一组图像

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
var-prizeImage;
//这是一个动态量
var结果=55;
//此数组的长度将更改。将添加/删除图像
var prizeImageArray=['image1.png'、'image2.png'、'image3.png'、'image4.png']
//我希望避免必须键入每个if语句。
如果(结果<25){
prizeImage=prizeImageArray[0];
}
如果(结果>26&&结果<50){
prizeImage=prizeImageArray[1];
}
如果(结果…/)等等
上面的代码很糟糕

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


我希望这是有意义的,我有一种感觉它不是。如果我理解你的要求,你希望有一个百分比(从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))]);
}
函数findPercentLocation(数组,百分比){
如果(百分比<0)百分比=0;
如果(百分比>100)百分比=100;
返回(数组[Math.round((百分比/100)*(array.length-1)));
}

最简单的解决方案是使用模运算符。我从未编写过JavaScript,但我认为以下代码在语法上是正确的

prizeImage = prizeImageArray[result % 25];

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

试试这个,你可以从百分比中加上或减去一,得到精确的结果

return prizeImageArray[Math.floor(percent/25)];

这其实不重要。它可以是0到100之间的任何数字。这个答案是错误的。对于范围为0..24的结果,它给出0..24。海报希望所有这些都转到索引0。Phrogz是对的,但这是一个糟糕的书面问题。所以请随意投票否决我。TerjeR是错的,但在这里也是新的;)如果
percent
为100或略低于100,
Math.round((percent/100)*array.length)]
将返回数组的长度,该长度是不存在的索引。你宁愿做
Math.round((百分比/100)*array.length-1)]