1

我正在使用几个 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


        }

    }
}
4

1 回答 1

2

显然,这里的问题在于有时您的 IF 语句返回错误。在这种情况下,它会尝试向数组添加一个元素,但未指定一些先前的索引,因此它会用“未定义”填充它们。

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

    if (galleryObject[2][i].galId === galleryObject[1][x].id) {
        gallerys.push({
                          filename:galleryObject[2][i].fileName,
                          caption :galleryObject[2][i].caption
                      });
    }
于 2013-04-22T13:25:38.320 回答