2012-04-25 1 views

答えて

4

理想的には、Array.reduceを使用することです:

alert(str.reduce(function (acc, curr) { return acc * curr; }, 1)); 

See it in action

Array.reduceは、バージョン9より前のIEでは使用できませんが、多くの実装が見つかるはずです(例:this one)。表現として文字列を評価しているあなたが探している

+0

感謝を。残念ながら、私のアプリはIE6でも動作するはずです。 :-( – Exception

+1

@ Soi:JSコードの一部として 'Array.prototype.reduce'の定義を追加すると、どのブラウザーでも正常に動作します。そうでない場合は、配列をループして移動してください。 – Jon

1

alert(eval(str.join('*')));​ 

あなたがevalを使用している場合は、あなたが何か間違ったことをやっている場合は、いつものように、あなたが真剣に自問しなければなりません。

は、だけではなく、ループ考えてみましょう。答えを

var result = 1; 
for (var i = 0; i < str.length; i++) result *= str[i]; 
alert(result); 
+0

ありがとうあなたはeval()を使用することの短所を含めることができますか?そして、このメソッドはすべてのIEブラウザで利用できますか? – Exception

+0

@SoI:すべてのブラウザで利用できますが、何かを評価するために使用するのは危険です。あなたが評価したものを完全に制御できます。クロスサイトスクリプティングの脆弱性が存在します。 – Guffa

関連する問題