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

96
Vistas
Matriz de diferentes propiedades con la misma identificación en un objeto - React JS

Estoy atravesando un objeto que tiene una matriz de objetos dentro de una propiedad y debo acceder a la identificación de un objeto para verificar qué colores de mis objetos tienen la misma identificación y hacer una matriz de los diferentes colores de la misma identificación para mostrarlo en la interfaz como un concatenado. Espero que puedas ayudarme.

Aquí les dejo la imagen del objeto sobre el cual estoy obteniendo los ids y colores

ingrese la descripción de la imagen aquí

Los dm_id son los que necesito para poder hacer el arreglo color_bom_header con el mismo dm_id

Aquí está el código que hace que esto suceda, pero no funciona bien :(

 this.state.stylesArray = this.props.location.state.stylesCombo.components.map((index, current) => { const col = this.state.stylesCombo.components && (this.state.stylesCombo.components[current].style_colors = index.color_bom_name) if(this.state.stylesCombo.components && this.state.stylesCombo.components[current].dm_id === index.dm_id){ if(this.state.stylesCombo.components[current].dm_name === index.dm_name){ this.state.colorStArray.push(col) this.state.cstarr = [...new Set(this.state.colorStArray)] } }else{ this.state.stylesCombo.components && (this.state.stylesCombo.components[current].style_colors = current.color_bom_name) } this.state.stylesCombo.components && (this.state.stylesCombo.components[current].style_colors = this.state.cstarr) })

también he probado con esto pero estoy atascado

 this.state.stylesArray = this.props.location.state.stylesCombo.components.map((current, index) => { for (current.dm_id in this.props.location.state.stylesCombo && this.props.location.state.stylesCombo.components) { if(current.dm_id === index.dm_id){ }else{ } } this.state.stylesCombo.components && (this.state.stylesCombo.components[index].style_colors = this.state.colorStArray) })
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Entonces, la tarea es hacer una matriz de elementos con la misma ID.
Necesitamos contar de alguna manera cuántos elementos de cada ID se presentan. Podemos hacer eso con un objeto.

 const counter = {} for (const el of arr) { // if counter has element with given ID, increase the counter, otherwise initialize to 1 counter[el.id] = (counter[el.id] || 0) + 1; }

Luego encontramos ID que tienen el conteo máximo

 const max = Object.entries(counter).reduce((acc, curr) => { if (acc.length === 0) return curr; const [currKey, currVal] = curr; const [maxKey, maxVal] = acc; return currVal > maxVal ? curr : acc }, [])[0]

Y luego filtramos nuestro estado

 state.filter(element => element.id === max); // or if `element.id` is of type number // you need to cast `max` to Number first const newMax = Number(max); state.filter(element => element.id === newMax);

No estoy seguro de no haber complicado demasiado la lógica, pero esa es la forma en que se me ocurrió.

about 4 years ago · Juan Pablo Isaza 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