JavaScript中的标准偏差计算器

Standard Deviation Calculator in JavaScript

本文关键字:计算器 标准 JavaScript      更新时间:2023-09-26

我做了一个标准差计算器,但我不确定我在计算中哪里出错了。我正在努力学习如何操作数组,所以我所做的一切都可能需要很长的路要走。

我做错了什么?

JavaScript:

myArray = [];
    squaredArray = [];
    var theTotal;
    var average;
    var theSquaredTotal;
    var meanOfSquaredArray;
    var squaredAverage;
    var standardDeviation;
    $(document).ready(function() {
        $('#inTakeButton').on('click', function() {
            var inputValue = parseFloat($('#input').val());
            if (inputValue === "") {
                return;
            }
            if (isNaN(inputValue)) {
                $('#input').val("");
                return;
            }
            myArray.push(inputValue);
            $('#input').val("");
        });
        $('#showArray').on('click', function() {
            console.log(myArray);
            $('#list').html("");
            for (var i = 0; i < myArray.length; i++) {
                $('#list').append("<li>" + myArray[i] + "</ul>");
            };
            $('#doMath').on('click', function() {
                theTotal = 0;
                for (var i = 0; i < myArray.length; i++) {
                    theTotal = theTotal + myArray[i];
                };
                $('#sum').html("");
                $('#sum').html("The sum is: " +
                    theTotal);
                average = parseFloat((theTotal /
                    myArray.length));
                $('#average').html("");
                $('#average').html(
                    "The mean value is: " + average
                );
                for (var i = 0; i < myArray.length; i++) {
                    squaredArray.push(myArray[i] -
                        average);
                };
                console.log(
                    "the subtracted squared away array is: " +
                    squaredArray);
                for (var i = 0; i < myArray.length; i++) {
                    squaredArray[i] = Math.pow(
                        squaredArray[i], 2);
                };
                console.log(
                    "the squared away array is: " +
                    squaredArray);
                for (var i = 0; i < squaredArray.length; i++) {
                    squaredTotal = 0;
                    squaredTotal = squaredTotal +
                        squaredArray[i]
                };
                console.log("The squared sum is: " +
                    squaredTotal);
                //meanOfSquaredArray = 
                squaredAverage = parseFloat((
                    squaredTotal / squaredArray
                    .length));
                console.log("The squared average is: " +
                    squaredAverage);
                standardDeviation = Math.sqrt(
                    squaredAverage);
                console.log(
                    "The standard deviation is: " +
                    standardDeviation);
            });
        });
    });
CSS:

#wrapper {
    width: 80%;
    margin: 0 auto;
    border: 1px solid #000;
    border-radius: 5px 5px 5px 5px;
    box-shadow: 5px 5px 10px 3px #000;
    padding: 10px;
}
h1 {
    text-align: center;
    color: orange;
    text-shadow: 1px 1px blue;
}
#intake {
    text-align: center;
}
HTML:

    <div id="wrapper">
        <div id="content">
            <h1>Standard Deviation</h1>
            <div id="intake">
                <input id="input" type="text"> <button id="inTakeButton">Push
                to Array</button> <button id="showArray">Show Array</button>
                <button id="doMath">Do Math</button>
            </div>
            <div id="middle">
                <ul id="list"></ul>
                <ul id="sortedList"></ul>
            </div>
            <div id="output">
                <p id="sorted"></p>
                <p id="sum"></p>
                <p id="average"></p>
            </div>
        </div>
    </div>

小提琴。

这是个很简单的错误,你在做

 for (var i = 0; i < squaredArray.length; i++) {
    squaredTotal = 0;
    squaredTotal = squaredTotal + squaredArray[i]
 };

因此,在每一步中,您都将squaredTotal重置为0,这意味着当循环结束时,squaredTotal将等于数组的最后一个值。修复方法是把它放在循环之外:

 squaredTotal = 0;
 for (var i = 0; i < squaredArray.length; i++) {
    squaredTotal = squaredTotal + squaredArray[i]
 };

您已经嵌套了两个点击事件:

$('#showArray').on('click', function() {
    //
    $('#doMath').on('click', function() {
        //
    });
});

你应该把#doMath out上的click事件独立出来,这样它就可以在你真正点击那个元素的时候运行。