将值从一个数组推入多维数组并得到错误

时间:2016-11-03 20:25:35

标签: javascript arrays multidimensional-array

function studentClasses() {
    var names = [];
    var course = [];
    var sortCourse = [];
    var uniqueCourse = [];
    var nameCourse = [];

    while (records.readNextRecord()) {
        var studentNames = records.getStudentName();
        var studentCourse = records.getStudentCourseNumber();

        names.push(studentNames);
        course.push(studentCourse);
        sortCourse.push(studentCourse);
        sortCourse.sort();
    }
    // sort a list of courses to find the unique courses
    for (var i = 0; i < sortCourse.length; i++) {
        if (sortCourse[i] !== sortCourse[i - 1]) {
            uniqueCourse.push(sortCourse[i]);
        }
    }

    uniqueCourse.sort;
    nameCourse.length = uniqueCourse.length;

    // create multi-d array containing names for a certain course
    for (var x = 0; x < uniqueCourse.length; x++) {
        for (var y = 0; y < course.length; y++) {
            if (uniqueCourse[x] === course[y]) {
                nameCourse[x].push(names[y]);
            }
        }
    }
}

这是我正在处理的代码,我收到错误

  

未捕获的TypeError:无法读取undefined(...)

的属性“push”

我有两个数组(“课程”&amp;“名称”),其中包含具有特定索引数据的信息。我正在尝试将我的“ uniqueCourse ”数组中的信息与我的“课程”数组进行比较,如果它们匹配,则索引位于“ course ” “然后将用于从”名称“中的索引位置调用信息。

以下是问题所在: 当我尝试将“ names [y] ”推入一个长度等于uniqueCourse的多维数组时(如果代码运行则为5),我得到了错误。

问题: 当我尝试使用代码时,为什么会出现未定义的错误

nameCourse[x].push(names[y]);

将信息从名称推送到 nameCourse ,x是我希望存储这些名称的相应级别?

我想:

nameCourse = [ [however many names called from names[y]],
               [however many names called from names[y]],
               [however many names called from names[y]],
               [however many names called from names[y]],
               [however many names called from names[y]] ]

1 个答案:

答案 0 :(得分:0)

您的nameCourse数组已填充undefined 你需要将nameCourse [x]初始化为一个数组,然后才进入它。 如下所示:

nameCourse = new Array(uniqueCourse.length).fill(0);