gpt4 book ai didi

javascript - 如何从数组位置内的多个 json 对象访问数据

转载 作者:行者123 更新时间:2023-12-03 00:10:46 26 4
gpt4 key购买 nike

我正在用nodejs制作一个小应用程序,我正在努力尝试从具有以下结构的json打印一些数据:

{
"courses": [
{
"java": [
{ "attendees": 43 },
{ "subject": "Crash course" }
]
},
{
"python":
{
"occurrences": [
{ "attendees": 24 },
{ "subject": "another crash course" },
{ "notes": "completed with issues" }
,
{ "attendees": 30 },
{ "subject": "another crash course" },
{ "notes": "completed with issues" }
]
}
}
],
}

如果我想打印“java”的与会者,我会这样做:

console.log(myJSON.courses[0]['java'][0]['attendees']);

打印内容

43

如果我想打印第二次出现的Python类(class)的笔记,我会这样做:

console.log(myJSON.courses[1]['python']['occurrences'][2]['notes']);

打印:

completed with issues

前面提到的情况是正确的,但我想做的是打印“java”的键(“参加者”和“主题”),正如你所看到的,Java是一个数组,并且在其独特的位置它有两个 json 对象,我尝试过:

console.log(myJSON.courses[0]['java'][0].keys;

并与

console.log(myJSON.courses[0]['java'].keys;

但它们分别打印“未定义”和“[Function:keys]”。

我在这里缺少什么?

有人可以帮我吗?:(

最佳答案

myJSON.courses[0]['java'] 是一个带有索引的数组。其中每个索引保存一个带有键的对象。您的数组并不完全具有您想要的键(数组的键是其索引:0、1 等...)

相反,您希望访问 myJSON.courses[0]['java'] 数组中对象的所有键。

您可以使用.map来做到这一点和 Object.keys.map 将允许您获取并转换 myJSON.courses[0]['java'] 数组中的每个对象。 Object.keys() 将允许您从给定对象获取一个键数组(在您的情况下,您的数组的长度为 1,因此您可以访问索引 0 该数组)。

const myJSON = {courses:[{java:[{attendees:43},{subject:"Crash course"}]},{python:{occurrences:[{attendees:24},{subject:"another crash course"},{notes:"completed with issues"},{attendees:30},{subject:"another crash course"},{notes:"completed with issues"}]}}]};

const myKeys = myJSON.courses[0]['java'].map(obj => Object.keys(obj)[0]);
console.log(myKeys);

如果数组中的对象有多个键,您还可以使用 .flatMap (注意浏览器支持):

const myJSON = {courses:[{java:[{attendees:43},{subject:"Crash course"}]},{python:{occurrences:[{attendees:24},{subject:"another crash course"},{notes:"completed with issues"},{attendees:30},{subject:"another crash course"},{notes:"completed with issues"}]}}]};

const myKeys = myJSON.courses[0]['java'].flatMap(Object.keys);
console.log(myKeys);

关于javascript - 如何从数组位置内的多个 json 对象访问数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54739627/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com