2012-04-25 6 views

ответ

4

Идеальным было бы использовать Array.reduce:

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

See it in action.

Array.reduce не доступен в IE раньше версии 9, но должно быть много реализаций для поиска (например, this one).

+0

Спасибо за ответ. К сожалению, мое приложение должно работать и в IE6. :-( – Exception

+1

@SoI: Если вы добавите определение 'Array.prototype.reduce' как часть вашего JS-кода, тогда он будет работать нормально в любом браузере. В противном случае просто перейдите по массиву и перейдите. – 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