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

330
Views
¿Cómo obtener todos los objetos únicos (con dos valores) en una matriz?

Estoy almacenando algunas coordenadas en una matriz. Se parece a esto:

 const coords = [{x: 260, y: 60}, {x: 180, y: 0}, {x: 180, y: 240}, {x: 360, y: 120}, {x: 180, y: 60}, {x: 180, y: 60}, {x: 180, y: 60}]

¿Cómo puedo filtrar esta matriz para que los objetos sean únicos, lo que significa que no hay duplicados de objetos con el mismo valor de x e y? El resultado esperado debe ser:

 const coords = [{x: 260, y: 60}, {x: 180, y: 0}, {x: 180, y: 240}, {x: 360, y: 120}, {x: 180, y: 60}]

He visto algunas soluciones similares, pero en realidad no resolvieron este problema. comencé con la siguiente función

 const output = Object.values( coords.reduce( (c, e) => { if (!c[ex]) c[ex] = e; return c; }, {})

pero solo devuelve objetos con diferentes valores de x, por lo que omite por completo el valor de y.

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Una idea es usar un Conjunto, mapear x e y en una cadena, y luego deserializar el Conjunto para tener x, y únicos.

p.ej..

 const coords = [{x: 260, y: 60}, {x: 180, y: 0}, {x: 180, y: 240}, {x: 360, y: 120}, {x: 180, y: 60}, {x: 180, y: 60}, {x: 180, y: 60}]; const dedup = [...new Set(coords.map(m => `${mx}:${my}`))].map(m => { const [x,y] = m.split(':').map(n => n | 0); return {x,y}; }); console.log(dedup);

about 4 years ago · Juan Pablo Isaza Report

0

Una solución bastante ineficiente (O(n^2)), pero flexible y sencilla: primero define una función que verifica si dos coordenadas son iguales. Luego, filtra todos los elementos que tienen un elemento igual en una posición posterior en la matriz.

 const coords = [{x: 260, y: 60}, {x: 180, y: 0}, {x: 180, y: 240}, {x: 360, y: 120}, {x: 180, y: 60}, {x: 180, y: 60}, {x: 180, y: 60}] const customUnique = (arr, isEqual) => { // filter elements where an equal element exists at an earlier position // thus the first element is kept return arr.filter((a, i) => !arr.some((b, j) => i > j && isEqual(a, b))) } console.log(customUnique(coords, (a, b) => ax === bx && ay === by))

about 4 years ago · Juan Pablo Isaza Report

0

Puede usar originalArray.reduce() con una matriz en lugar de un objeto, por lo que puede usar array.find.

 const coords = [{x: 260, y: 60}, {x: 180, y: 0}, {x: 180, y: 240}, {x: 360, y: 120}, {x: 180, y: 60}, {x: 180, y: 60}, {x: 180, y: 60}] console.log( coords.reduce((arr, e) => { if (!arr.find(item => item.x == ex && item.y == ey)) { arr.push(e); } return arr; }, []) );

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!