Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.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_Arrays_Object_Javascript Objects - Fatal编程技术网

Javascript 将对象添加到阵列失败

Javascript 将对象添加到阵列失败,javascript,jquery,arrays,object,javascript-objects,Javascript,Jquery,Arrays,Object,Javascript Objects,我正在构建一个数组,该数组将承载具有学生姓名、成绩和z分数(当前值设置为null)的对象,但加载对象时遇到问题 对象的外观如下所示: var 000 = { name: "John Doe", grade: 92, zScore: null }; HTML: JavaScript: var studentArray = []; var oid = 001; var studentName = $('#name').val(); var studentGrade = (

我正在构建一个数组,该数组将承载具有学生姓名、成绩和z分数(当前值设置为null)的对象,但加载对象时遇到问题

对象的外观如下所示:

var 000 = {
    name: "John Doe",
    grade: 92,
    zScore: null
};

HTML:

JavaScript:

var studentArray = [];
var oid = 001;
var studentName = $('#name').val();
var studentGrade = (parseInt($('#name').val()));
var zScore = null;
$(document).ready(function() {
    $('#add').on('click', function() {
        if (studentName === "" || studentGrade === "") {
            return;
        };
        oid = {
            name: studentName,
            grade: studentGrade,
            z: zScore
        };
        //check it out
        console.log(oid);
        //push object to array
        studentArray.push(oid);
        //check out array
        console.log(studentArray);
        //push OID up for next student and reset inputs
        $('#name').val("");
        $('#grade').val("");
        oid++;
    });
    $('#doMath').on('click', function() {});
});

我做错了什么?

通过添加到数组,实际上忽略了对象名称。也许您可以使用父对象

var studentObj = {};
var oid = 001;
var studentName = "evan";
var studentGrade = "a";
var zScore = null; 
//push to object
studentObj[oid] = {
    name: studentName,
    grade: studentGrade,
    z: zScore
};
//check out object
console.log(studentObj);
//push OID up for next student and reset inputs
$('#name').val("");
$('#grade').val("");
oid++;

查看此代码,它可以帮助您在每次单击时分配值:

$('#add').on('click', function() {
    studentName = $('#name').val();
    studentGrade = (parseInt($('#name').val()));
    ...
 });

var 000?这样行吗?这是一个样本<代码>变量oid实际上从
001开始
嗯,oid从一个数字开始,然后你给它分配一个对象,然后你试图增加这个对象…不会起作用!您正在使用#name和not#grade设置学生成绩的值。此外,您还需要在单击函数中获取这些值,否则它们在代码中总是为空,即
studentArray[oid]={name:studentName,grade:studentGrade,z:zScore
但当我打开控制台时,成绩出现在学生前面。这是为什么?最终目标是什么?你打算如何显示数据?是否按字母顺序显示数据?我正计划访问score属性以最终计算z分数pr属性。最终目标是显示z分数。我还没有决定如何显示数据,但可能现在有一个包含名称、等级和z分数的列表。我在底部添加了一个#doMath的快速函数单击,看看我实际上还没有看到
hasOwnProperty
方法,所以我查找了它。我的理解正确吗它所做的是按名称访问属性?例如,
studentArray[property]。grade
获取成绩,但不能使用
studentArray.grade
var studentObj = {};
var oid = 001;
var studentName = "evan";
var studentGrade = "a";
var zScore = null; 
//push to object
studentObj[oid] = {
    name: studentName,
    grade: studentGrade,
    z: zScore
};
//check out object
console.log(studentObj);
//push OID up for next student and reset inputs
$('#name').val("");
$('#grade').val("");
oid++;
$('#add').on('click', function() {
    studentName = $('#name').val();
    studentGrade = (parseInt($('#name').val()));
    ...
 });