我在 JavaScript 中读取多维数组时遇到问题。
在我的网页上,用户单击网页链接以显示另一个页面。我希望我的程序能够:
• 阅读 URL;
• 提取页面名称;
• 在多维数组中搜索页面名称;
• 显示同一页面,但文本和图像列在数组中。
为此,函数读取 JSON 文件并使用读取的数据填充多维数组:
$.getJSON('includes/pages.json', function(data) {
nombre_appareils = 0;
for (key in data.APPAREILS) { //Counts the entries in the JSON file.
nombre_appareils++;
}
for (var i = 0; i < nombre_appareils; i++) {
tableau_appareils[i] = [];
}
for (key in data.APPAREILS) {
//Stores each entry in th .json in tableau_appareils[][].
tableau_appareils[key]['publication'] = data.APPAREILS[key].PUBLICATION;
tableau_appareils[key]['url'] = data.APPAREILS[key].URL;
tableau_appareils[key]['marque'] = data.APPAREILS[key].MARQUE;
tableau_appareils[key]['titre'] = data.APPAREILS[key].TITRE;
tableau_appareils[key]['sous-titre'] = data.APPAREILS[key].SOUS_TITRE;
tableau_appareils[key]['image1'] = data.APPAREILS[key].IMAGE1;
tableau_appareils[key]['texte-image1'] = data.APPAREILS[key].TEXTE_IMAGE1;
tableau_appareils[key]['image2'] = data.APPAREILS[key].IMAGE2;
tableau_appareils[key]['texte-image2'] = data.APPAREILS[key].TEXTE_IMAGE2;
tableau_appareils[key]['image3'] = data.APPAREILS[key].IMAGE3;
tableau_appareils[key]['texte-image3'] = data.APPAREILS[key].TEXTE_IMAGE3;
tableau_appareils[key]['image4'] = data.APPAREILS[key].IMAGE4;
tableau_appareils[key]['texte-image4'] = data.APPAREILS[key].TEXTE_IMAGE4;
tableau_appareils[key]['image5'] = data.APPAREILS[key].IMAGE5;
tableau_appareils[key]['texte-image5'] = data.APPAREILS[key].TEXTE_IMAGE5;
tableau_appareils[key]['image6'] = data.APPAREILS[key].IMAGE6;
tableau_appareils[key]['texte-image6'] = data.APPAREILS[key].TEXTE_IMAGE6;
tableau_appareils[key]['image7'] = data.APPAREILS[key].IMAGE7;
tableau_appareils[key]['texte-image7'] = data.APPAREILS[key].TEXTE_IMAGE7;
tableau_appareils[key]['image8'] = data.APPAREILS[key].IMAGE8;
tableau_appareils[key]['texte-image8'] = data.APPAREILS[key].TEXTE_IMAGE8;
tableau_appareils[key]['image9'] = data.APPAREILS[key].IMAGE9;
tableau_appareils[key]['texte-image9'] = data.APPAREILS[key].TEXTE_IMAGE9;
tableau_appareils[key]['image10'] = data.APPAREILS[key].IMAGE10;
tableau_appareils[key]['texte-image10'] = data.APPAREILS[key].TEXTE_IMAGE10;
tableau_appareils[key]['image11'] = data.APPAREILS[key].IMAGE11;
tableau_appareils[key]['texte-image11'] = data.APPAREILS[key].TEXTE_IMAGE11;
tableau_appareils[key]['image12'] = data.APPAREILS[key].IMAGE12;
tableau_appareils[key]['texte-image12'] = data.APPAREILS[key].TEXTE_IMAGE12;
tableau_appareils[key]['image13'] = data.APPAREILS[key].IMAGE13;
tableau_appareils[key]['texte-image13'] = data.APPAREILS[key].TEXTE_IMAGE13;
tableau_appareils[key]['image14'] = data.APPAREILS[key].IMAGE14;
tableau_appareils[key]['texte-image14'] = data.APPAREILS[key].TEXTE_IMAGE14;
tableau_appareils[key]['image15'] = data.APPAREILS[key].IMAGE15;
tableau_appareils[key]['texte-image15'] = data.APPAREILS[key].TEXTE_IMAGE15;
tableau_appareils[key]['texte-general'] = data.APPAREILS[key].TEXTE_GENERAL;
}
})
这部分程序有效。当我将此代码行放入函数中时:
console.log(tableau_appareils);
tableau_appareils 数组填充了 JSON 文件中的所有数据:
0 : [publication: 'o', url: 'aires_35iiic', marque: 'Aires', titre: 'Aires 35 III-C', sous-titre: 'Un clone de Leica M3 sans objectif interchangeable', …]
1 : [publication: 'n', url: 'aires_radar_eye', marque: 'Aires', titre: 'Aires Eye-Radar', sous-titre...
在另一个函数中,我想在数组每个条目的“url”字段中找到 new_url 并获取该条目编号。我写道:
for (var i = 0; i < nombre_appareils; i++) {
if (tableau_appareils[i]['url'] == new_url) {
number = i;
break;
}
}
在控制台中,我收到一条错误消息:
Uncaught TypeError: Cannot read properties of undefined (reading '0')
知道我做错了什么吗?
谢谢!
您的消息表明
tableau_appareils
未在第二个片段中定义。它是第一个片段的本地内容。
如果您逐行调试代码,您应该会看到这一点。
console.log(tableau_appareils) // undefined.
for (var i = 0; i < nombre_appareils; i++) {
if (tableau_appareils[i]['url'] == new_url) {
number = i;
break;
}
}
有多种方法可以向您展示
tableau_appareils
第二个片段: