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

165
Vistas
Hay 2 matrices de objetos con la misma identificación, pero una propiedad de objeto es verdadera y otra propiedad es falsa, cómo eliminar ambas si la propiedad es falsa

Tengo una matriz de objetos, hay 2 matrices de objetos con la misma identificación, pero una propiedad de objeto es verdadera y otra propiedad es falsa, cómo eliminar ambas si la propiedad es falsa.

 [{id: 'a660f87e-476d-493b-a220-31aff8cf764c', selected: true} {id: '1e8284a5-6ba3-48c0-b8ac-f6ffae55b44e', selected: true} {id: 'a660f87e-476d-493b-a220-31aff8cf764c', selected: false}]

Así que esta es la matriz, pero 2 objetos tienen id "a660f87e-476d-493b-a220-31aff8cf764c" y uno ha seleccionado la propiedad falsa y otra verdadera, así que si hay falso, quiero que el objeto con esa id se elimine, así que necesito el resultado final como esto.

 [{id: '1e8284a5-6ba3-48c0-b8ac-f6ffae55b44e', selected: true}]

Si la matriz es así

 [{id: 'a660f87e-476d-493b-a220-31aff8cf764c', selected: true} {id: '1e8284a5-6ba3-48c0-b8ac-f6ffae55b44e', selected: true} {id: 'a660f87e-476d-493b-a220-31aff8cf764c', selected: true}]

quiero resultado como

 [{id: 'a660f87e-476d-493b-a220-31aff8cf764c', selected: true} {id: '1e8284a5-6ba3-48c0-b8ac-f6ffae55b44e', selected: true} ]`

¿Alguien puede sugerir una solución?

Gracias

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Todo lo que necesitas es Array.reduce con Array.filter

Si desea seleccionar solo aquellos objetos cuya propiedad selected sea verdadera, independientemente del valor que contenga la identificación, puede probar el siguiente fragmento.

 let arr = [ {id: 'a660f87e-476d-493b-a220-31aff8cf764c', selected: true}, {id: '1e8284a5-6ba3-48c0-b8ac-f6ffae55b44e', selected: true}, {id: '1e8284a5-6ba3-48c0-b8ac-f6ffae55b44f', selected: false}, {id: '1e8284a5-6ba3-48c0-b8ac-f6ffae55b44e', selected: false}, {id: 'a660f87e-476d-493b-a220-31aff8cf764c', selected: true} ] arr = Object.values(arr.reduce( (a, b) => { a[b.id] = a[b.id] ? a[b.id] : b ; return a; }, {})).filter(a => a.selected === true) console.log(arr);

Puede proporcionar su verificación como if una condición para filter

about 4 years ago · Juan Pablo Isaza Denunciar

0

Así que dos elementos de acción en sus preguntas.

  1. Obtener los elementos solo si la selected es verdadera
  2. Si la id seleccionada ya está disponible en una nueva matriz, entonces no es necesario incluirla nuevamente (como si quisiera una matriz única).

Puedes lograrlo como a continuación.

 let tmp = [{id: '1', selected: true}, {id: '2', selected: true}, {id: '1', selected: true}]; var newArr = []; var tmp1 = tmp.map((itm) => { var t = newArr.map(a => a.id); if(t.indexOf(itm.id) == -1 && itm.selected) { newArr.push(itm); } }); console.log(newArr);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Entonces, básicamente, desea eliminar el objeto con selected: false de la matriz, ¿verdad?

Tal vez pueda usar un bucle para eliminar el objeto con selected: false .

 let _array = [{ id: 'a660f87e-476d-493b-a220-31aff8cf764c', selected: true }, { id: '1e8284a5-6ba3-48c0-b8ac-f6ffae55b44e', selected: true }, { id: 'a660f87e-476d-493b-a220-31aff8cf764c', selected: false } ]; let temp_array = []; _array.forEach((object, index) => { if (object.selected == false && hasDuplicate(object.id) == true) { _array.splice(index, 1); } }); function hasDuplicate(id) { // function for finding if the element has a duplicate. _array.forEach(object => { temp_array.push(object.id) }); // A temporary array for storing all the ids. var indexes = [], i = -1; while ((i = temp_array.indexOf(id, i + 1)) != -1) { indexes.push(i); } // Finds indexes of all object with same id if (indexes.length > 1) { return true; } // if has more than 1 index it returns true (hasDuplicate = true) return false; }

En su pregunta no hay una coma (,) entre los elementos, así que edite su pregunta.

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