Tuve resultados de datos para 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" }, }, ]Podría obtener itemname.content pero grade.content no.
¿Cómo puedo codificar obtener grade.content y substring itemname.content?
Codifico javascript y reacciono
En json api no se ponen los puntos, el get se hace directamente con /itemname
si agrega una calificación en blanco al primer objeto, probablemente lo encontrará.
[ { itemname: {}, grade: {}, } ]desea que la estructura de su objeto de nivel base sea consistente dentro de la matriz para que no tenga que marcar indefinido todo el tiempo.
Dado que aún no está claro exactamente qué está haciendo para acceder a los campos, supondré que simplemente está tratando de mapear los datos y obteniendo errores de acceso nulo/indefinido cuando un elemento no tiene la propiedad grade . A medida que itera sobre la matriz, puede usar el operador de encadenamiento opcional para evitar accesos nulos/indefinidos accidentales.
el.itemname?.content el.grade?.contentEncadenamiento opcional
El operador de encadenamiento opcional (
?.) le permite leer el valor de una propiedad ubicada en lo profundo de una cadena de objetos conectados sin tener que verificar que cada referencia en la cadena sea válida.El
?.El operador es como el.operador de encadenamiento, excepto que en lugar de causar un error si una referencia es nula (nulloundefined), la expresión se cortocircuita con un valor de retorno de indefinido. Cuando se usa con llamadas a funciones, devuelveundefinedsi la función dada no existe.
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); });