【问题标题】:Array of Obects with 2 dimensional array property error具有二维数组属性错误的对象数组
【发布时间】:2014-06-08 03:30:25
【问题描述】:

在这里问是不得已的办法,我在这个错误上花了 50 多个小时,如果有人能帮我一把,我将不胜感激。

错误:“当前版本的 Javascript 不支持解构赋值”、“需要半列或换行符”。

目标:将 for 循环中的用户输入分配给变量,使用这些变量为对象数组的每个元素初始化对象属性。

function STUDENT(name, id, course, mark, sum)
    {
        this.studName = name;
        this.studentID = id;
        this.courses = course;
        this.marks = mark; //Attempted new array and marks[courses][0]
        this.studsum = sum;
    }

var student = new Array(30);

for(i = 0; i < 30; i++)
    {
       var name1 = prompt("Enter Student Name:");
        if (name1 !== "!!!")

            {
                var id1 = parseInt(prompt("input the students ID:", ""));

                for (var l = 0; l < course.length; l++)
                {
                    mark1[l] = parseFloat(validateMark(l));
                    sum1 += mark1[l];
                    coursesum[l] = mark1[l] + coursesum[l];
                }

                var student[i] = new STUDENT(name1, id1, course1, mark1, sum1);
                /*ERROR IS HERE ^*/


            }

    else
        i = 30; /*Breaks out of loop*/
    }/* end of for loop*/

我尝试了很多不同的东西,但这是我代码的基础,所有其他功能都很好,每个变量的 console.log() 都可以正常工作。

提前谢谢你。

【问题讨论】:

  • 没有course 数组。你也应该var你的循环变量。也应该是student[i] 而不是var student[i]

标签: javascript arrays oop object for-loop


【解决方案1】:

改变这个:

var student[i] = new STUDENT(name1, id1, course1, mark1, sum1);

进入:

student[i] = new STUDENT(name1, id1, course1, mark1, sum1);

您的数组已经声明不需要前面的“var”。

PS:你循环中的课程也是未定义的(在你当前的代码中)。

【讨论】:

  • 以前没有 var,现在变量到处都是,我做了很多更改,我忘记了正在发生的事情,但我不断收到错误,如果不是在这里,那么在其他地方关于这个 sn-p 或对象的属性。在这里它是未定义的,但即使它被定义并正常工作,我会输入 console.log() 它会返回正确的值,然后会告诉我它是 NaN(使用 parseInt,日志返回浮点数)或未定义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-18
  • 2020-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-05
相关资源
最近更新 更多