Tengo un objeto como este. Continuará en este formato con más y más bloques para niños, pero este fragmento da una idea. Estoy tratando de reemplazar el valor de los datos, a lo largo de todo este objeto con una versión analizada de NLP.
{ "date": "next friday" "more text": "someVariable" "children": [{ "date": "today" "more text": "someVariable" "children": [{ "date": "yesterday" "more text": "someVariable" "children": []}, {"date": "yesterday" "more text": "someVariable" "children": []}] } }Lo que me gustaría hacer es ejecutar una función de reemplazo de texto solo en los valores de "fecha" en toda la matriz y devolver un objeto mutado donde todo permanece igual excepto el valor de "fecha" siempre que la operación de búsqueda y reemplazo es exitoso.
Básicamente estoy ejecutando NLP en el valor del elemento "fecha"
Intenté una función recursiva pero no puedo encontrar la manera de mantener la estructura original.
async function parseChildren(obj, child = true){ for (var k in obj) {if (obj[k] !== null){ // console.log(obj(k)) if (k == "date"){ console.log(obj[k]) console.log(parseDates(obj[k])) } if (k == "children"){ parseChildren(obj[k], false) } else if (child == false) { parseChildren(obj[k]) } } } }¡Gracias de antemano por cualquier ayuda!
Podrías intentar algo como esto:
const test = { "date": "next friday", "more text": "someVariable", "children": [{ "date": "today", "more text": "someVariable", "children": [{ "date": "yesterday", "more text": "someVariable", "children": []}, {"date": "yesterday", "more text": "someVariable", "children": []}] }] } function mutateDates(obj){ if (obj.date) { obj.date = 'mutation_here_we_it_is' } obj.children.map(mutateDates) } mutateDates(test)Esto resultará en:
{ "date": "mutation_here_we_it_is", "more text": "someVariable", "children": [{ "date": "mutation_here_we_it_is", "more text": "someVariable", "children": [{ "date": "mutation_here_we_it_is", "more text": "someVariable", "children": [] }, { "date": "mutation_here_we_it_is", "more text": "someVariable", "children": [] }] }] }