Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

115
Vistas
Encuentre elementos y verifique si tiene la misma identificación que en el ámbito principal y si tiene agregar isDisable al elemento

Hola a todos, necesito obtener consejos sobre cómo realizar una función de este tipo para buscar y agregar propiedades si el alcance de los niños tiene las mismas identificaciones que el alcance de los padres y agrega la clave isDisable .

Los datos que obtuve y necesito transformarlos con una nueva propiedad isDisable

 const data = [ { id: "MT1", children: [] }, { id: "MT2", children: [] }, { id: "MT4", children: [] }, { id: "1234", children: [ { id: "MT1", children: [] }, { id: "MT65", children: [] }, ] }, { id: "537465", children: [{ id: "MT1", children: [] }, { id: "MT2", children: [ { id: "MT1", children: [] }, { id: "MT12", children: [] } ] }, ] } ]

Esta es una función para buscar y agregar una propiedad a un elemento y resultado.

 const someSearchFunction = (data) => {} console.log(someSearchFunction(data)) const data = [ { id: "MT1", children: [], isDisable: false }, { id: "MT2", children: [], isDisable: false }, { id: "MT4", children: [], isDisable: false }, { id: "MT12", children: [], isDisable: false }, { id: "1234", children: [ { id: "MT1", children: [], isDisable: true }, { id: "MT65", children: [], isDisable: false }, ] }, { id: "537465", children: [ { id: "MT1", children: [], isDisable: true }, { id: "42354322", children: [ { id: "MT1", children: [], isDisable: true }, { id: "MT12", children: [] isDisable: false } ] }, ] } ]

¡Gracias!

about 4 years ago · Santiago Gelvez
2 Respuestas
Responde la pregunta

0

Podemos hacer esto capturando la lista de ID para el nivel actual para pasar a la llamada recursiva para nuestros hijos.

Aquí hay una versión que no muta la entrada: ¡no somos bárbaros! -- pero devuelve un nuevo árbol con la propiedad isDisable configurada apropiadamente.

 const disableDupIds = (xs, ids = [], currLevel = xs .map (x => x .id)) => { return xs .map (({id, children, ...rest}) => ({ id, ...rest, isDisable: ids .includes (id), children: disableDupIds (children, currLevel) })) } const data = [{id: "MT1", children: []}, {id: "MT2", children: []}, {id: "MT4", children: []}, {id: "1234", children: [{id: "MT1", children: []}, {id: "MT65", children: []}]}, {id: "537465", children: [{id: "MT1", children: []}, {id: "MT2", children: [{id: "MT1", children: []}, {id: "MT12", children: []}]}]}] console .log (disableDupIds (data))
 .as-console-wrapper {max-height: 100% !important; top: 0}

Primero capturamos la lista de ID en nuestro nivel actual, luego simplemente mapeamos nuestros elementos, devolviendo nuevas versiones con isDisable establecido en true cuando nuestra ID actual está en la lista del nivel anterior, y recurrente en nuestros hijos, usando nuestra lista negra de actual identificadores de nivel

about 4 years ago · Santiago Gelvez Denunciar

0

Su resultado esperado no es una matriz válida, mejor verifíquelo.

Puedes probar esta función:

 const someSearchFunction = (data) => { data.forEach(item => { item.isDisable = false item.children.some(child => { if (data.some(parent => { return parent.id === child.id })) { child.isDisable = true } else { child.isDisable = false } } ) })

}

about 4 years ago · Santiago Gelvez Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda