简体   繁体   中英

JavaScript Multi-Dimensional Array

I have a Student, who is in many courses, which have many Modules for each course.

So far, I have got:

var myStudent = new MySchool.Student("Bart", "Simpson", "0800 Reverse", "Some Street", "Springfield");

myStudent.addCourse(new MySchool.Course("S1000", "Skateboarding"));
myStudent.addCourse(new MySchool.Course("Q1111", "Driving"));
myStudent.addCourse(new MySchool.Course("D999", "Avoiding Detention"));

Student.JS

MyStudent.Student = function (firstName, lastName, tel, address1, address2) {
    this._firstName = firstName;
    this._lastName = lastName;
    this._tel = tel;
    this._address1 = address1;
    this._address2 = address2;
    this._courses = new Array();

};

//Add course:
addCourse: function (course) {
    this._courses.push(course);
},

This works fine. However, I would like to add Modules to this. So for each course there are multiple modules.

I have tried performing a multi-dimensional array but with no success.

Can someone please advise? Is there an alternative?

Not exactly sure what you mean exactly but from what I understood, here is how you could do :

MyStudent.Student = function (firstName, lastName, tel, address1, address2) {
    this._firstName = firstName;
    this._lastName = lastName;
    this._tel = tel;
    this._address1 = address1;
    this._address2 = address2;
    this._courses = [];

    this.addCourse =  function (course) {
        this._courses.push(new Course(course));
    };
};


//Add course:

MySchool.Module = function(name){
    this.name = name;
}

MySchool.Course = function(name) {

    this.name = name;
    this.modules = [];

    this.addModule = function(name) {
        this.mmodules.push(new MySchool.Module(name));
    }
}

That way, you can create a student which has a function addCourse. Then you add whatever courses you want, and for each course you have a addModule function to fill them with modules.

You could do something more complex, like for exemple creating a student which takes as parameters an array of courses/modules, which would look like that :

courses = [
    "poney" : [
        "ride",
        "jump"
    ],
    "english" : [
        "oral",
        "grammar",
        "written"
    ]
]

And then create a function which loop through the array and uses the addCourse and addModule functions to fill your student with his courses/modules. But as you begin with JS, maybe you prefer the simple solution upside.

The OO way of doing this would be to have a modules array in your course since the modules belong to the course. Then you would add modules to the course directly

Here's the quick and dirty:

addCourse: function (course) {
    course.modules = [];
    course.addModule = function(module){
        this.modules.push(module);
    }
    this._courses.push(course);
    return course;
}

which can be used like this:

myStudent.addCourse(new MySchool.Course("S1000", "Skateboarding")).addModule(...);

Of course the best approach is to deal with all of this inside the Course constructor, which you haven't shown us.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM