Javascript 从嵌套数组(json)获取值
我正在尝试从数组中获取值:Javascript 从嵌套数组(json)获取值,javascript,jquery,json,ajax,Javascript,Jquery,Json,Ajax,我正在尝试从数组中获取值: [ { "id": "5899aaa321e01b8b050041cb", "name": "John Doe", "picture": {"small": "https://cdn.image.com/1234"}, "age": 28, "location": {"city": "London"}, "following": 1, "resources": {"band": "http://image/m
[
{
"id": "5899aaa321e01b8b050041cb",
"name": "John Doe",
"picture": {"small": "https://cdn.image.com/1234"},
"age": 28,
"location": {"city": "London"},
"following": 1,
"resources": {"band": "http://image/music"},
"top_works": [
{
"points": 20,
"portfolio": {
"facebook_id": "1e691681472",
"picture": {"small": "https://cdn.image.com/1234"}
}
},
{
"points": 10,
"portfolio": {
"facebook_id": "1e6916r17ry",
"picture": {"small": "https://cdn.image.com/1234"}
}
}
]
}
]
$(document).ready(function() {
$.ajax({
type: 'GET',
url: '/api/url/123',
data: { get_param: 'value' },
dataType: 'json',
success: function (data) {
$.each(data, function (index, element) {
$('#api').append('<div>'
+ ' <div><h3>' + element.name + '</h3></div>'
+ '<div>' + element.top_works[2].portfolio.picture.small + '></div>');
});
}
});
});
[
{
“id”:“5899AAA321E01B8B05041CB”,
“姓名”:“约翰·多伊”,
“图片:{“小”:”https://cdn.image.com/1234"},
“年龄”:28岁,
“地点”:{“城市”:“伦敦”},
"以下":一,,
“资源”:{“波段”:”http://image/music"},
“顶级作品”:[
{
"分":20分,,
“投资组合”:{
“facebook_id”:“1e691681472”,
“图片:{“小”:”https://cdn.image.com/1234"}
}
},
{
"点":10,,
“投资组合”:{
“facebook_id”:“1e6916r17ry”,
“图片:{“小”:”https://cdn.image.com/1234"}
}
}
]
}
]
$(文档).ready(函数(){
$.ajax({
键入:“GET”,
url:“/api/url/123”,
数据:{get_param:'value'},
数据类型:“json”,
成功:功能(数据){
$.each(数据、函数(索引、元素){
$('#api')。追加(''
+''+element.name+''
+''+元素.top_工作[2].portfolio.picture.small+'>');
});
}
});
});
我可以毫无问题地阅读所有内容,因为我需要指定数字[x],而且我需要一个循环
在某些情况下,如果top_works为空,我会得到一个“undefinedinconsole”,如果元素不存在,我需要显示一个空白
有人可以帮我吗?您应该验证是否存在,例如:
$.each(data, function (index, element) {
var HTML = '<div>'
+ ' <div><h3>' + element.name + '</h3></div>';
var exists = element.top_works[2] && element.top_works[2].portfolio && element.top_works[2].portfolio.picture && element.top_works[2].portfolio.picture.small;
HTML+= exists ? '<div>' + element.top_works[2].portfolio.picture.small + '</div>' : '<div>#empty space</div>';
$('#api').append(HTML + '</div>');
});
$。每个(数据、函数(索引、元素){
var HTML=''
+''+element.name+'';
var exists=element.top_works[2]和&element.top_works[2]。公文包和元素。top_works[2]。公文包.picture和元素。top_works[2]。公文包.picture.small;
HTML+=存在?''+元素。top_工作[2]。portfolio.picture.small+'':'空白';
$('#api').append(HTML+'');
});
但是,如果您想在最后一个索引中搜索图片,也许可以执行以下操作:
$.each(data, function (index, element) {
var HTML = '<div>'
+ ' <div><h3>' + element.name + '</h3></div>';
var last = element.top_works ? element.top_works.length-1 : -1;
var exists = last >= 0;
HTML+= exists ? '<div>' + element.top_works[last].portfolio.picture.small + '</div>' : '<div>#empty space</div>';
$('#api').append(HTML + '</div>');
});
$.each(data, function (index, element) {
var HTML = '<div>'
+ ' <div><h3>' + element.name + '</h3></div>';
if(element.top_works && element.top_works.length > 0) {
for(var i in element.top_works) {
HTML+= '<div>' + element.top_works[i].portfolio.picture.small + '</div>';
}
} else {
HTML += '<div>#empty space</div>';
}
$('#api').append(HTML + '</div>');
});
$。每个(数据、函数(索引、元素){
var HTML=''
+''+element.name+'';
var last=element.top_works?element.top_works.length-1:-1;
var exists=last>=0;
HTML+=存在?''+元素。top_工作[last]。portfolio.picture.small+'':'空白';
$('#api').append(HTML+'');
});
编辑
对于循环,可以执行以下操作:
$.each(data, function (index, element) {
var HTML = '<div>'
+ ' <div><h3>' + element.name + '</h3></div>';
var last = element.top_works ? element.top_works.length-1 : -1;
var exists = last >= 0;
HTML+= exists ? '<div>' + element.top_works[last].portfolio.picture.small + '</div>' : '<div>#empty space</div>';
$('#api').append(HTML + '</div>');
});
$.each(data, function (index, element) {
var HTML = '<div>'
+ ' <div><h3>' + element.name + '</h3></div>';
if(element.top_works && element.top_works.length > 0) {
for(var i in element.top_works) {
HTML+= '<div>' + element.top_works[i].portfolio.picture.small + '</div>';
}
} else {
HTML += '<div>#empty space</div>';
}
$('#api').append(HTML + '</div>');
});
$。每个(数据、函数(索引、元素){
var HTML=''
+''+element.name+'';
if(element.top_有效和&element.top_有效长度>0){
for(元素中的变量i.top_工作){
HTML+=''+元素。top_工作[i]。portfolio.picture.small+'';
}
}否则{
HTML+='#空白';
}
$('#api').append(HTML+'');
});
您可以使用array.length
属性检查and元素是否存在,如下例所示
var-topWorks={“top_-works”:[
{
"分":20分,,
“投资组合”:{
“facebook_id”:“1e691681472”,
“图片”:{
“小”:https://cdn.image.com/1234",
}
}
},
{
"点":10,,
“投资组合”:{
“facebook_id”:“1e6916r17ry”,
“图片”:{
“小”:https://cdn.image.com/1234",
}
}
},
]
}
如果(topWorks.top_works.length>0){
log(“Top works在索引0处有元素”);
}
如果(topWorks.top_works.length>1){
log(“Top works的元素位于索引1”);
}
如果(topWorks.top_works.length>2){
log(“Top works在索引2处有元素”);
}否则
{
log(“Top works在索引2处没有元素”);
}
什么是输入,什么是输出?你尝试了什么?你的数组格式不正确。谢谢你,这是有效的!第二个代码,但如果我想得到更多的顶级元素,它会起作用吗?我得到最后一个元素…嗯..如果你想得到3?