parseInt の使用は正しいです。
ただし、reduce 引数ごとに使用する必要があります。
さらに、各 parseInt の結果が数値であるかどうかも確認する必要があります。そうでない場合、関数は NaN で数値を合計しようとし、他のすべての合計も NaN になるためです。
parseInt に関するMozilla の ECMAscriptドキュメントには、次のように書かれています。
最初の文字を数値に変換できない場合、parseInt は NaN を返します。
次に、NaN が目標を台無しにしないようにするために、次のように実装できます。
function parseIntForSum(str) {
var possibleInteger = parseInt(str);
return isNaN(possibleInteger) ? 0 : possibleInteger;
}
function sum(f, s) {
return parseIntForSum(f) + parseIntForSum(s);
}
window.alert('sum = ' + [ '', '4490449', '2478', '1280990', '22296892', '244676', '1249', '13089', '0', '0', '0\n' ].reduce(sum));
これが動作するjsfiddleです:http://jsfiddle.net/cLA7c/