我有一个包含订单数据的JSON文件。 JSON文件的格式如下:
{
"orders": [
{"name": "Peter", "email": "peter@aol.com"}
{"name": "David", "email": "david@aol.com"}
{ "name": "George", "email": "george@aol.com"}
]
}
如您所见;所有数据都是一个名为"orders"
的分支的一部分,然后每个订单都是其自己的分支,但是该分支没有名称。
我正在尝试生成数据集中的"name"
的列表。
使用简化的数据集,我会做类似的事情:
$(data).each(function(i, name){
$('#namesText').append($("li")
.append($("li").append(name.name))
});
})
但是这不起作用,因为数据不在树的第一级。
我的问题是,当关卡没有名字时,如何下调关卡?
答案 0 :(得分:1)
这听起来像DFS问题,其中每个对象都有可能是原始数据类型或另一个对象的键。由于name
字段可以在您需要解决的给定约束中处于任意级别,因此我想说使用DFS算法遍历对象中的每个键,如果有另一个对象,请仔细研究直到找到name
字段。更好的解决方案是重新设计数据结构,以确保您随时知道name
字段位于哪个级别和位置。
答案 1 :(得分:0)
如果要从name
数组的元素中获取orders
属性的列表,可以使用Array.map
:
const names = myJson.orders.map(o => o.name);
答案 2 :(得分:0)
尝试
namesText.innerHTML= data.orders.map(p=>`<li>${escape(p.name)}</li>`).join``
var data = {
"orders": [
{
"name": "Peter",
"email": "peter@aol.com",
},
{
"name": "David",
"email": "david@aol.com",
},
{
"name": "George",
"email": "george@aol.com",
}
]
}
namesText.innerHTML= data.orders.map(p=>`<li>${escape(p.name)}</li>`).join``
<ul id="namesText"></ul>