要更新我的问题,我希望能够访问对象和嵌套对象上的每个值,但我不知道如何执行此操作。我首先尝试了 foreach 循环和 for 循环,但我不知道如何获得“评论”,例如
data.forEach((element) => {
const name = element.restaurantName;
const address = element.address;
for(let i = 0; i < data.length; i++) {
const comment = element.ratings[i].comment;
}
init_resto(name, address, comment);
});
var list_group = document.getElementById('list-group');
function init_resto(name, address, comment) {
var liElt = document.createElement('li');
liElt.innerHTML =
"<li class=\"list-group-item\">" + name + "</li>" +
"<li class=\"list-group-item\">" + address + "</li>" +
"<li class=\"list-group-item\">" + comment + "</li>";
list_group.appendChild(liElt);
}
我的预期输出:
"branco"
"39 Rue des Petites Écuries, 75010 Paris"
"Un excellent restaurant, j'y reviendrai ! Par contre il vaut mieux aimer la viande."
Tout simplement mon restaurant préféré !
"Babalou"
"address":"4 Rue Lamarck, 75018 Paris"
"Une minuscule pizzeria délicieuse cachéejuste à côté du Sacré choeur !"
...
这是我的数据:
[
{
"restaurantName":"Bronco",
"address":"39 Rue des Petites Écuries, 75010 Paris",
"lat":48.8737815,
"long":2.3501649,
"ratings":[
{
"stars":4,
"comment":"Un excellent restaurant, j'y reviendrai !Par contre il vaut mieux aimer la viande."
},
{
"stars":5,
"comment":"Tout simplement mon restaurant préféré !"
}
]
},
{
"restaurantName":"Babalou",
"address":"4 Rue Lamarck, 75018 Paris",
"lat":48.8865035,
"long":2.3442197,
"ratings":[
{
"stars":5,
"comment":"Une minuscule pizzeria délicieuse cachéejuste à côté du Sacré choeur !"
},
{
"stars":3,
"comment":"J'ai trouvé ça correct, sans plus"
}
]
}
]
然后我尝试使用递归函数,这可能是一种更好的方法,但我不知道如何在不覆盖这些值的情况下获取所有值:
function recurse(obj) {
let value= "";
for (let property in obj) {
value = obj[property];
if(typeof obj[property] == "object" && obj[property] !== null) {
value = recurse(obj[property]);
}
}
return value;
}
答案 0 :(得分:2)
评论解释了为什么您的代码只返回一个值。
很难确定您要做什么。如果您只想收集对象树的叶值,那么这个简单的递归应该可以做到:
const getValues = (obj) =>
Object (obj) === obj
? Object .values (obj) .flatMap (getValues)
: obj
const input = [{restaurantName: "Bronco", address: "39 Rue des Petites Écuries, 75010 Paris", lat: 48.8737815, long: 2.3501649, ratings: [{stars: 4, comment: "Un excellent restaurant, j'y reviendrai !Par contre il vaut mieux aimer la viande."}, {stars: 5, comment: "Tout simplement mon restaurant préféré !"}]}, {restaurantName: "Babalou", address: "4 Rue Lamarck, 75018 Paris", lat: 48.8865035, long: 2.3442197, ratings: [{stars: 5, comment: "Une minuscule pizzeria délicieuse cachéejuste à côté du Sacré choeur !"}, {stars: 3, comment: "J'ai trouvé ça correct, sans plus"}]}]
console .log (input .map (getValues))
.as-console-wrapper {max-height: 100% !important; top: 0}
(我发现 Object (obj) === obj
的类型检查比执行 typeof
更干净。)
但如果这不是您的预期输出,请编辑问题以包含预期输出。