更新的解决方案:
由于 OP 说他无法控制 输入,data 由维基百科提供(可能是他们的服务之一)
然后我假设数据是结构化且正确的,即永远不会出现嵌套数组中的 1 比另一个更长或更短的情况。
是的,您绝对可以使用 map API 为您从 Wikipedia 获得的输入赋予更多意义,然后执行 forEach 迭代项目以构建您的 HTML 字符串。
示例:
var data = [["title 1","title 2","title 3"],
["description 1","description 2","description 3"],
["link 1","link 2","link 3"]];
var titles = data[0];
var descriptions = data[1];
var links = data[2];
var output = titles.map((title, index) => {
return {
"title": title,
"description": descriptions[index],
"link": links[index]
}
});
output.forEach((item) => {
$("#output").append(
"<div><h1>"+ item.title +"</h1><p>"+ item.description
+"</p><a>"+ item.link +"</a></div>"
);
})
见 JFiddle:https://jsfiddle.net/SamuelToh/8tpb1jsg/
以前的解决方案:
首先 - 我认为选择的数据结构方式容易出错,因为标题1、描述1和链接1如何形成一个集合并没有明确的关系。
如果阵列中的 1 个不同步怎么办?也就是说,数组中的 1 个比其他数组短或长,这样您的代码将在运行时死于 index out of bond。
我认为理想情况下,您会希望数据的结构类似于;
var suggested_data = {
title1: {
description: "description 1",
link: "link1"
},
title2: {
description: "description 1",
link: "link1"
},
title3: {
description: "description 1",
link: "link1"
}
}
这样你说标题 X 具有值为 yyy 的 description 属性和值为 zzz 的链接属性。
即使缺少其中一个属性,您最多也会得到一个undefined 值。
这就是你循环结构的方式
for (var title in suggested_data) {
var item = suggested_data[title];
$("#output").append(
"<div><h1>" + title+"</h1><p>" + item.description
+"</p><a>" + item.link + "</a></div>"
);
}
最终这与是否使用map 无关,我认为更多的是您选择的数据结构。