javascript - 在 JavaScript 中访问嵌套的对象数组
问题描述
我想循环遍历嵌套的对象数组,但我几乎尝试了所有方法,但我不明白它是如何工作的。
我有看起来像这样的对象数据:
[
{
"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"
}
]
}
]
我想访问评级以获得星星和评论,但我不知道该怎么做。
我也得到 [object object]const coord = { lat: el.lat, long:el.long };
到目前为止,这是我的代码:
fetch("http://localhost/ApiMap/data.json")
.then((response) => response.text())
.then(function(data) {
data = JSON.parse(data);
//console.log(data);
for (const el of data) {
const name = el.restaurantName;
const address = el.address;
const coord = { lat: el.lat, long:el.long };
const tabRatings = el.ratings;
init_resto(name, address, coord, tabRatings);
}
})
.catch(function(error) {
console.log('Il y a eu un problème avec l\'opération fetch: ' + error.message);
});
解决方案
您可以使用以下方法。
使用 Array.forEach() 方法。forEach() 方法为每个数组元素调用一次函数(回调函数)。
在回调函数(dataFilter)内部,值保存每个对象。内部值
ratings
是一个属性。所以我们value.ratings
用来获取收视率数据。ratings
data 也是一个数组,我们也循环遍历它的每个元素。
var data = [
{
"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 dataFilter(value, index, array){
for(var i = 0; i< value.ratings.length; i++ ){
console.log("comment: "+ value.ratings[i].comment);
console.log("stars:" +value.ratings[i].stars);
}
}
data.forEach(dataFilter);
推荐阅读
- python - 有什么好的方法可以创建一个简单但好看的网页,该网页构建 Excel 文件的报告并显示 Pandas 数据框和绘图?
- tensorflow - 将 TensorFlow 分布更新为 TensorFlow 概率
- javascript - 如果元素必须换行,则将 flexbox 子元素的宽度扩大到 100% - jquery 或 javascript?
- java - SWT:获取不同大小的系统图标版本
- c# - 如何提高触摸屏控件的响应能力?
- c# - 如何在 C# 中使用等待异步进程?
- c# - C# 上的三元运算符
- amazon-rds - 使用 Telegraf 和 Cloudwatch 获取 RDS 可用磁盘空间
- django - Django 嵌套内联
- amazon-s3 - 尽管存储桶为空,AWS s3 仍呈现旧的 html 文件