我有一个包含对象和数组的(嵌套)数据结构。如何提取信息,即访问特定或多个值(或键)?
{
"data": [{
"name": "name1",
"value": "value1",
"list": [{
"sname": "sname1",
"svalue": "svalue1"
}, {
"sname": "sname2",
"svalue": "svalue2"
}]
}]
}
var pk = $("#pk").val();
console.log(pk);
url = "/register/search?id=" + pk;
console.log(url);
$('#largeTable').DataTable({
"ajax": url,
"bDestroy": true,
"columns": [{
"data": "name"
},
{
"data": "value"
},
{
"data": "list.1.sname"
},
{
"data": "list.1.svalue"
},
{
"data": null,
"defaultContent": editview
}
]
});
此处可以使用list.1或list.0
显示第一个或第二个列表值但我一次想要两个值。
另外,我如何访问svalue
中第二项的list
?
我尝试使用data.list[1]
但是:
TypeError:data.list未定义
答案 0 :(得分:0)
由于data
是一个数组,您应首先获取该项 - 并且由于您只有一个项目 - 您使用data[0]
,然后可以访问list
像data[0].list[1]
这样的属性 - 这将为您提供list
中的第二项 - 但由于您对此项目的特定属性(svalue
)感兴趣,因此您将像这个:data[0].list[1].svalue
。
更好的方法是遍历数据数组中的项目 - 然后对每个项目循环遍历列表数组中的项目。请参阅@ Rajesh的评论。 我希望有所帮助;
答案 1 :(得分:0)
具体来说,您可以像object.data[0].list[1].svalue
一样访问它。 data.list
undefined
的原因是因为data
对应于数组data: [{ }]
这就是我们使用data[0]
的原因,但data
本身就是关键在一个对象中,所以在你到达data
之前,你需要访问它。如果data
所在的对象名称为object
(就像我在下面所做的那样),那么就可以像object.data[0]
const object = {
"data": [{
"name": "name1",
"value": "value1",
"list": [{
"sname": "sname1",
"svalue": "svalue1"
}, {
"sname": "sname2",
"svalue": "svalue2"
}]
}]
}
console.log(object.data[0].list[1].svalue)