Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
设置对象值[JavaScript]时出错_Javascript_Jquery_Object_Javascript Objects_Standard Deviation - Fatal编程技术网

设置对象值[JavaScript]时出错

设置对象值[JavaScript]时出错,javascript,jquery,object,javascript-objects,standard-deviation,Javascript,Jquery,Object,Javascript Objects,Standard Deviation,我构建了一个标准偏差计算器,它使用对象按预期工作。但是,现在我想将每个对象中的newScore属性设置为对象z分数((分数-平均值)/标准偏差) 然而,似乎每个对象都得到了相同的z分数,我不知道为什么 我做错了什么 HTML: JavaScript: var myArray = []; var sumOfScores; var mean; var variance; var secondArray = []; var thirdArray = []; var squaredSum; var s

我构建了一个标准偏差计算器,它使用对象按预期工作。但是,现在我想将每个对象中的
newScore
属性设置为对象z分数((分数-平均值)/标准偏差)

然而,似乎每个对象都得到了相同的z分数,我不知道为什么

我做错了什么

HTML:

JavaScript:

var myArray = [];
var sumOfScores;
var mean;
var variance;
var secondArray = [];
var thirdArray = [];
var squaredSum;
var std;
$(document).ready(function () {
    $('#push').on('click', function () {
        var name = $('#name').val();
        var score = parseInt($('#score').val());
        myArray.push((student = {
            name: name,
            score: score,
            newScore: null
        }));
        console.log(student);
        $('#name').val("");
        $('#score').val("");
    });
    $('#show').on('click', function () {
        $('#list').html("");
        for (i = 0; i < myArray.length; i++) {
            $('#list').append("<li>" + myArray[i].name + " received a score of " + myArray[i].score + "</li>");
        };
    });
    $('#doMath').on('click', function () {
        sumOfScores = 0;
        for (i = 0; i < myArray.length; i++) {
            sumOfScores += myArray[i].score;
        };
        $('#sum').html("The sum is: " + sumOfScores);
        mean = (sumOfScores / myArray.length);
        $('#mean').html("The mean score is: " + mean);
        variance = 0;
        for (i = 0; i < myArray.length; i++) {
            console.log(myArray[i].score);
            secondArray.push(myArray[i].score - mean);
        };
        console.log(mean);
        console.log("The second array is: " + secondArray);
        for (i = 0; i < secondArray.length; i++) {
            thirdArray.push(Math.pow(secondArray[i], 2));
        };
        console.log("The third array is: " + thirdArray);
        squaredSum = 0;
        for (i = 0; i < thirdArray.length; i++) {
            squaredSum += thirdArray[i];
        };
        console.log("The squared sum is: " + squaredSum);
        variance = 0;
        variance = (squaredSum / ((thirdArray.length) - 1));
        console.log("The variance is: " + variance);
        $('#variance').html("The variance is: " + variance);
        std = Math.sqrt(variance);
        $('#std').html("The standard deviation is: " + std);
        console.log("The standard deviation is: " + std);
        //figure out z score
        for (i = 0; i < myArray.length; i++) {
            myArray[i].newScore = ((myArray[i].newScore - mean) / std);
        };
        for (i = 0; i < myArray.length; i++) {
            console.log(myArray[i].newScore);
        };
    });
});
var myArray=[];
var-sumofscore;
var均值;
var方差;
var secondArray=[];
var thirdArray=[];
方差平方;
var-std;
$(文档).ready(函数(){
$('#push')。on('单击',函数(){
var name=$('#name').val();
var score=parseInt($('#score').val();
myArray.push((学生={
姓名:姓名,,
分数:分数,
新闻核心:空
}));
console.log(学生);
$('#name').val(“”);
$(“#分数”).val(“”);
});
$('#show')。在('click',函数(){
$('#list').html(“”);
对于(i=0;i”+myArray[i].name+”获得的分数为“+myArray[i].score+””;
};
});
$('doMath')。在('click',函数(){
sumOfScores=0;
对于(i=0;i
根据Abhitalks,第61行应为:

myArray[i].newScore = ((myArray[i].score - mean) / std);
鉴于,我有:

myArray[i].newScore = ((myArray[i].newScore - mean) / std);

这将不起作用,因为
newScore
不是该计算的值,并且被设置为null,您不能将其相乘。

您可能需要
(myArray[i].score-mean)
而不是
(myArray[i].newScore-mean)
。您的
newScore
默认设置为
null
,因此从
null
中减去
mean
…就是这样,谢谢!
myArray[i].newScore = ((myArray[i].score - mean) / std);
myArray[i].newScore = ((myArray[i].newScore - mean) / std);