我正在使用几个for循环来创建数组。问题是,在第二遍时,它添加了4个未定义的变量,我看不到它们来自何处。

注意:if语句正确,只有匹配时才会被触发。

代码 :

for (var x = 0; x < galleryObject[1].length; x++) {
    gallerys[x]= [];

    for (var i = 0; i < galleryObject[2].length; i++) {

        if (galleryObject[2][i].galId === galleryObject[1][x].id) {


            gallerys[x][i] = {};
            gallerys[x][i].filename=galleryObject[2][i].fileName
            gallerys[x][i].caption =galleryObject[2][i].caption


        }

    }
}

最佳答案

显然,这里的问题是有时您的IF语句返回false。在这种情况下,它将尝试将元素添加到数组,但未指定某些先前的索引,因此将其填充为“ undefined”。

尝试将IF语句中的代码更改为:

    if (galleryObject[2][i].galId === galleryObject[1][x].id) {
        gallerys.push({
                          filename:galleryObject[2][i].fileName,
                          caption :galleryObject[2][i].caption
                      });
    }

关于javascript - 对于循环添加未定义的条目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16148079/

10-12 15:25