0

次のコードを php から JavaScript に変換したいと思います。

$price = '270';

$allowed_sms_prices = array(
 5,7,10,15,20,25,30,35,39,40,
 45,49,50,55,59,60,69,75,79,85,
 89,95,100,125,150,175,200,225,250,275,
 300,310,315,320,325,330,335,340,345,350,
 355,360,365,370,375,380,385,390,395,400,
 405,410,415,420,425,430,435,440,445,450,
 455,460,465,470,475,480,485,490,495,500
);

while( ! in_array( $price, $allowed_sms_prices ) )
{
     $price = $price + 1;
}
echo $price;
4

1 に答える 1

3

同等の JavaScript は次のとおりです。

$price = 270;

$allowed_sms_prices = Array(
 5,7,10,15,20,25,30,35,39,40,
 45,49,50,55,59,60,69,75,79,85,
 89,95,100,125,150,175,200,225,250,275,
 300,310,315,320,325,330,335,340,345,350,
 355,360,365,370,375,380,385,390,395,400,
 405,410,415,420,425,430,435,440,445,450,
 455,460,465,470,475,480,485,490,495,500
);

while( $allowed_sms_prices.indexOf($price) == -1 )
{
     $price = $price + 1;
}
alert($price);

それがどれほど簡単だったかわかりますか?

ロジックにはまだ問題があります。つまり、ループの信頼できる終了条件がないということです。たとえば、$price値が より大きい場合500、ループは無期限に実行されます。これを修正する方法はいくつかありますが、そのうちの 1 つは、値が配列内の最大値よりも大きくないかどうかを確認することです。

于 2012-11-16T20:34:59.920 に答える