Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

164
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!