无法在API JSON中获得等级



我有数据结果到API:

"tabledata": [
{
"itemname": {
"class": "level1 levelodd oddd1 b1b b1t column-itemname",
"colspan": 7,
"content": "<i class="icon fa fa-folder fa-fw icon itemicon"  title="Category" aria-label="Category"></i>Intro to Computing IT1016",
"celltype": "th",
"id": "cat_2_23"
},
},
{
"itemname": {
"class": "level2 leveleven item b1b column-itemname",
"colspan": 1,
"content": "<a title="Link to Quiz activity Exercise 2.1" class="gradeitemheader" ><img class="icon itemicon"  alt="Quiz" />Exercise 2.1</a>",
"celltype": "th",
"id": "row_94_23"
},

"grade": {
"class": "level2 leveleven item b1b itemcenter  column-grade",
"content": "10.00",
"headers": "cat_2_23 row_94_23 grade"
},
},
]

我可以得到itemname。内容要紧,等级要紧。内容不能。

我的代码如何获得等级。内容和子字符串itemname。Content ?

我编写javascript和react

在json api中,点是不放的,get是直接用/itemname

完成的

如果您在第一个对象中添加空白等级,它可能会找到它。

[
{
itemname: {},
grade: {},
}
]

你希望你的基本级对象结构在数组内保持一致,这样你就不必总是检查未定义。

由于还不清楚您正在做什么来访问字段,我假设您只是试图映射数据并在元素没有grade属性时击中null/未定义访问错误。当你在数组上迭代时,你可以使用可选链操作符来防止意外的null/undefined访问。

el.itemname?.content
el.grade?.content

可选的链接

可选链接操作符(?.)使您能够读取位于连接对象链深处的属性值无需检查链中的每个引用是否有效。

?.操作符与.链操作符相似,不同之处在于而不是在引用为null (nullundefined),表达式短路,返回值为未定义的。当与函数调用一起使用时,返回undefinedif给定的函数不存在

const tabledata = [
{
"itemname": {
"class": "level1 levelodd oddd1 b1b b1t column-itemname",
"colspan": 7,
"content": "<i class="icon fa fa-folder fa-fw icon itemicon"  title="Category" aria-label="Category"></i>Intro to Computing IT1016",
"celltype": "th",
"id": "cat_2_23"
},
},
{
"itemname": {
"class": "level2 leveleven item b1b column-itemname",
"colspan": 1,
"content": "<a title="Link to Quiz activity Exercise 2.1" class="gradeitemheader" ><img class="icon itemicon"  alt="Quiz" />Exercise 2.1</a>",
"celltype": "th",
"id": "row_94_23"
},
"grade": {
"class": "level2 leveleven item b1b itemcenter  column-grade",
"content": "10.00",
"headers": "cat_2_23 row_94_23 grade"
},
},
];
tabledata.forEach(el => {
console.log("item:", el.itemname?.content);
console.log("grade:", el.grade?.content);
});

itemname和grade必须在同一个对象中吗?

如果没有,你可以这样做…

"tabledata": [
{
"itemname": {
"class": "level1 levelodd oddd1 b1b b1t column-itemname",
"colspan": 7,
"content": "<i class="icon fa fa-folder fa-fw icon itemicon"  title="Category" aria-label="Category"></i>Intro to Computing IT1016",
"celltype": "th",
"id": "cat_2_23"
},
},
{
"itemname": {
"class": "level2 leveleven item b1b column-itemname",
"colspan": 1,
"content": "<a title="Link to Quiz activity Exercise 2.1" class="gradeitemheader" ><img class="icon itemicon"  alt="Quiz" />Exercise 2.1</a>",
"celltype": "th",
"id": "row_94_23"
},
},
{           
"grade": {
"class": "level2 leveleven item b1b itemcenter  column-grade",
"content": "10.00",
"headers": "cat_2_23 row_94_23 grade"
},
},
]

最新更新