Tengo una consulta compleja con cientos de campos y campos anidados. Lo que quiero hacer es, para cada índice, extraer el texto en inglés y francés. Como puede ver en la matriz, no hay texto en francés para algunos índices. En ese caso, quiero obtener el texto en inglés. Para mí, extraer el texto en inglés funciona bien porque el texto ya está allí, pero en el caso del francés, obtengo errores indefinidos. ¿Cuál sería la mejor manera de implementar esto? ¿Se necesita Loadash para esto o solo métodos JS puros?
Para que quede claro, tengo errores al extraer el francés porque en algunos campos, el texto en francés no está disponible, quiero usar el valor en inglés en ese caso.
También se recomienda si puedo obtener los valores en inglés y francés por su campo de idioma en lugar del índice. No tengo idea de cómo hacer eso.
Cualquier sugerencia, la documentación es apreciada. ¡Gracias!
matriz de ejemplo:
[ { id: "1", name: [ { language: "en-US", text: "HOLIDAY" } ], order: 6, Groups: [ { name: [ { language: "en-US", text: "REGULAR" } ], code: "REGEARN" }, { name: [ { language: "en-US", text: "CHARGE" } ], code: "CHARGE" } ] } ]y aquí está el código sandbox que reproduce mi error: CODE SAND BOX https://codesandbox.io/s/javascript-forked-5073j
EDITAR:
RENDIMIENTO ESPERADO:
{ key: key, englishtext: "Value Here", frenchtext: "Value Here" }a continuación hay un código que funciona, pero el problema es que no funciona cuando no hay idioma francés o ese campo. Recibo errores indefinidos. Entonces, ¿es posible que pueda obtener los datos necesarios del campo de idioma?
x.map((y) => ({ key: y.id, name: y.name[0].text, groupname: y.Groups ? x.Groups[0].name?.[0].text : 'N/A', }))¿Esperas un resultado como este? Si no te importa lodash.
const _ = require('lodash'); const getNames = (arr) => { return arr.map((obj) => { const id = obj.id; const englishtext = _.get(obj, 'name[0].text', 'N/A'); const frenchtext = _.get(obj, 'name[1].text', englishtext); return { id, englishtext, frenchtext }; }); }; console.log(getNames(x)); // [ // { id: '1', englishtext: 'HOLIDAY', frenchtext: 'HOLIDAY' }, // { id: '2', englishtext: 'Stat Holiday', frenchtext: 'Congé Férié' }, // { id: '3', englishtext: 'Over', frenchtext: 'Over' } // ]