3

こんにちは私はコンマで区切られた数字の文字列「100,200,300,400,500」を持っています。これはjavascript分割関数を使用して配列に分割しています。

var data = [];
data = dataString.split(",");

parseFloatを使用して配列の値を解析し、それらを配列に格納しようとしています。次に、配列内の数値を合計して、別の変数「dataSum」として格納します。

次のコードがありますが、動作させることができません。

var dataSum = "";

for (var i=0; i < data.length; i++) {
    parseFloat(data[i]);
    dataSum += data[i];
}

したがって、このすべての終わりに、解析された数値のいずれかに個別にdata [0]、data [1]などにアクセスでき、dataSumの総数を取得できるはずです。私は何が間違っているのですか?

4

3 に答える 3

10

(1)

var dataSum = "";

文字列として初期化dataSumしています。文字列の場合、+=は連結演算子である100200300400500ため、連結のために取得します。0に初期化する必要があります。

var dataSum = 0;

(2)

parseFloat入力パラメータを変更しません。float値が返されます。だからあなたは使うべきです

dataSum += parseFloat(data[i]);

(3)

var data = [];
data = dataString.split(",");

2番目の割り当ては1番目の割り当てを上書きします。書くだけ

var data = dataString.split(",");

(ところで、ECMAScript 5はこのワンライナーをサポートしています:

return "100,200,300,400,500".split(/,/).map(parseFloat).reduce(function(x,y){return x+y;})

)。

于 2010-04-05T19:38:58.507 に答える
6

parseFloatは値を返します。これを使用して計算を行う必要があります。また、dataSum変数を数値に初期化する必要があります。

var dataSum = 0;

for (var i=0; i < data.length; i++) {
    var current = parseFloat(data[i]);
    dataSum += current;
    // to save back onto array
    // data[i] = current;
}
于 2010-04-05T19:38:59.757 に答える
2

結果を使用していますがparseFloat、何にも割り当てていません。

wcschoolsから:

parseFloat()関数は文字列を解析し、浮動小数点数を返します。

さらに、文字列に数値を追加すると結果が連結されるため、デフォルトでは。dataSumではなく0に設定する必要があります""

var dataSum = 0.0;

for (var i=0; i < data.length; i++) {
    dataSum += parseFloat(data[i]);
}
于 2010-04-05T19:37:48.237 に答える