将字符串数组转换为浮点数然后查找转换数组的平均值

时间:2014-08-13 12:09:16

标签: javascript

我正在尝试创建一个for循环,它将获得需要转换为浮点数的字符串数组的平均值。当我运行这个时,我只在循环内部获得正确的和值,但是当我尝试记录' sum'在for循环之外,它等于' NaN和' average'等于' NaN'在for循环之外。我对JavaScript和Web开发作为一个整体相对较新,因此对我所做的错误以及如何解决它的一个很好解释和简单的响应将非常感激。

我的代码:

var myArray = ["4.5333422323", "3.4345355", "2.535563435"];
var sum = 0.0;

//Should run loop 3 times
for(var x = 0; x < myArray.length; x++) {
        //Should change the String inside of myArray[x] to its Float form
        myArray[x] = parseFloat(myArray[x]);

        //Adds the Float form of myArray[x] to the pre existing sum
        sum += myArray[x];
        console.log("The current sum is: " + sum);
}
//Should compute the the average of myArray
var average = sum / parseFloat(myArray.length);
console.log("The total average is: " + average);

4 个答案:

答案 0 :(得分:2)

var myArray = ["4.5333422323", "3.4345355", "2.535563435"];
var sum = 0.0;

//Should run loop 3 times
for(var x = 0; x < myArray.length; x++) {
        //Should change the String inside of myArray[x] to its Float form
        myArray[x] = +(myArray[x]);

        //Adds the Float form of myArray[x] to the pre existing sum
        sum += myArray[x];
        console.log("The current sum is: " + sum);
}
//Should compute the the average of myArray
var average = sum / (myArray.length);
console.log("The total average is: " + average);

试试这个。

答案 1 :(得分:1)

您可以使用map jQuery获取所有Array元素的总和。

代码如下:

var myArray = ["4.5333422323", "3.4345355", "2.535563435"];
var sum = 0.0;
myArray.map(function(val){ 
    sum += parseFloat(val);
});
var average = sum / myArray.length;
console.log("The total average is: " + average);

如果你想将数组转换为float,那么:

var myArray = ["4.5333422323", "3.4345355", "2.535563435"];
var sum = 0.0;
myArray = myArray.map(function(val){ 
    sum += parseFloat(val);
    return parseFloat(val);
});
var average = sum / myArray.length;
console.log("The total average is: " + average);

答案 2 :(得分:0)

myArray.length已经是一个数字:

var average = sum / myArray.length; 

答案 3 :(得分:0)

您的代码中可能还有其他内容可以使用自定义函数覆盖parseFloat,该函数并不总是返回数字。小心一点。