jQuery 如何使用多重循环从 json 获取数据
2016-08-14
223
我有这样的 json 数据 http://pastebin.com/k3a5UNsL 当使用 json 格式化程序查看时,我想使用 jquery 在 possible_persons 对象内获取存储在对象上的数据。
我试图循环访问数据,但不清楚如何获取数据名称、性别、地址等...
当我使用这段代码时
function build_possible_persons(result) {
var relationship = result['possible_persons'];
$.each(relationship, function(key, value) {
$.each(value, function(sec_key, sec_value) {
alert(sec_value);
});
});
}
我得到了第一个循环结果的alert值,如图0:25所示,3788825f48716e6c....,[object],[object],等等....
我怎样才能对其中的对象进行循环以获取我想要的值? 我尝试
function build_possible_persons(result) {
var relationship = result['possible_persons'];
$.each(relationship, function(key, value) {
$.each(value, function(sec_key, sec_value) {
$.each(sec_key.names, function(third_key, third_value) {
alert(third_key);
});
});
});
}
或使用
alert(sec_key.names[0].display);
但没有成功。我创建的代码没有显示任何结果。
请帮忙查看我的代码中的缺陷。谢谢
2个回答
使用 Array.prototype.map() 可能会更简单。
function build_possible_persons(result) {
var persons = result.possible_persons;
alert(persons.map(p => p.addresses ? p.addresses[0].display : 'N/A').join("\n"))
}
编辑: 使用 箭头函数 ,您可以像这样合并人员的数据:
function build_possible_persons(result) {
var persons = result.possible_persons;
var rows = persons.map(p => {
var address = p.addresses ? p.addresses[0].display : 'N/A';
var name = p.names ? p.names[0].display : 'N/A'
return name + ' ' + address;
});
alert(rows.join('\n'));
}
Santiago Hernández
2016-08-14
我看到的第一个问题是,在第二个循环的
sec_key
中是文本
“names”
(以及您的其他属性。如果要循环遍历名称,请替换为:
$.each(value['names'], function(j, name)
第二个问题:并非所有
relationship
都具有属性
names
,因此您需要检查这一点:
if(value['names']) {
$.each(value['names'], function(....
最后,每个“name”都是具有 first 和 last 属性的对象。如果您提醒一个对象,您将看不到实际的名称。您应该确保已设置
display
属性或重建字符串
将它们全部放在一起:
$.each(relationship, function(i, value) {
if (value['names'] !== undefined) {
$.each(value['names'], function(j, name) {
console.log(name.display);
});
}
});
Assimilater
2016-08-14