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のいずれにも一致しません。

これを試してください。正確にするために、パーセントから1を加算または減算できます。

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

最も簡単な解決策は、モジュロ演算子を使用することです。私はJavaScriptを書いたことがありませんが、次のコードは構文的に正しいと思います。

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