JavaScript:从XML文件导入数据切换为JS对象数组导入的实现咨询
实现方案
完全可以按你期望的格式改写,实现逻辑非常简单,以下是具体说明和可直接使用的代码:
1. 直接硬编码JS对象数组(无需读取XML)
如果你的数据是固定不需要动态更新的,可以直接定义数组,完全符合你给出的格式:
// 如果要兼容你原逻辑从下标1开始读取的习惯,可在数组第一位留空占位 var table = [ // 占位空元素,对应原逻辑i从1开始计数的写法 {"name":"cafe 1", "address":"1 cafe st"}, {"name":"cafe 2", "address":"2 cafe st"}, ]
2. 遍历调用注意事项
你写的调用语法本身是合法的,只需要修正一处边界问题即可正常运行:
var m; // 原写法的 table.length-1 会漏掉最后一个元素,改为 table.length 即可 // 如果数组第一位留空,从下标1开始遍历完全没问题 for (m = 1; m < table.length; m++) { if (table[m].name == "cafe 1") { // 此处写你的业务逻辑 } }
如果你想按JS常规习惯从下标0开始遍历,去掉数组第一位的占位空元素,把循环初始值改为m=0即可。
3. 仍需读取XML生成目标格式数组的写法
如果后续还是需要从XML文件读取数据、自动生成你要的JS数组格式,可以用如下代码替换原AJAX success回调逻辑:
$.ajax({ type: "GET", url: "x.xml", dataType: "xml", success: function(xml) { var table = [] // 如果要兼容从下标1开始的逻辑,先加一个空占位元素 // table.push({}) $(xml).find('location').each(function(){ var name = $(this).find('name').text(); var address = $(this).find('address').text(); table.push({name:name, address:address}); }); // 拿到table数组后就可以按你想要的语法遍历调用 } });
内容的提问来源于stack exchange,提问作者User301276
相关产品推荐
相关产品推荐

