Tengo una matriz que contiene cientos, a veces miles de objetos con vectores de objetos 3D. Hay tres o incluso más objetos idénticos en la matriz (creo que también son necesarios para que el renderizado sepa de qué lado están las normales de la superficie), pero para lo que quiero hacer, necesito que desaparezcan los objetos idénticos. La parte mala es que no puedo simplemente verificar un valor ya que a veces dos objetos comparten, por ejemplo, el mismo valor para x pero luego y o z son diferentes. ¿Hay una manera eficiente de hacer eso? Desafortunadamente, todos los tutoriales que encontré tratan sobre la verificación de un valor y necesito verificarlos todos.
const vectors = [ {x: 6.869495194905539e-9, y: -0.11905603855848312, z: -0.3318425416946411}, {x: 6.869495194905539e-9, y: -0.11905603855848312, z: -0.3318425416946411}, {x: 6.869495194905539e-9, y: -0.11905603855848312, z: -0.3318425416946411}, {x: 0.06476999074220657, y: -0.11905603855848312, z: -0.3254662752151489}, {x: 0.06476999074220657, y: -0.11905603855848312, z: -0.3254662752151489}, {x: 0.06476999074220657, y: -0.11905603855848312, z: -0.3254662752151489}, {x: 0.06476999074220657, y: -0.11905603855848312, z: -0.3254662752151489}, {x: 0.12705090641975403, y: -0.11905603855848312, z: -0.306582510471344}, {x: 0.12705090641975403, y: -0.11905603855848312, z: -0.306582510471344}, {x: 0.12705090641975403, y: -0.11905603855848312, z: -0.306582510471344}, etc etc ]Puede usar conjuntos para eliminar los duplicados:
const vectors = [ {x: 6.869495194905539e-9, y: -0.11905603855848312, z: -0.3318425416946411}, {x: 6.869495194905539e-9, y: -0.11905603855848312, z: -0.3318425416946411}, {x: 6.869495194905539e-9, y: -0.11905603855848312, z: -0.3318425416946411}, {x: 0.06476999074220657, y: -0.11905603855848312, z: -0.3254662752151489}, {x: 0.06476999074220657, y: -0.11905603855848312, z: -0.3254662752151489}, {x: 0.06476999074220657, y: -0.11905603855848312, z: -0.3254662752151489}, {x: 0.06476999074220657, y: -0.11905603855848312, z: -0.3254662752151489}, {x: 0.12705090641975403, y: -0.11905603855848312, z: -0.306582510471344}, {x: 0.12705090641975403, y: -0.11905603855848312, z: -0.306582510471344}, {x: 0.12705090641975403, y: -0.11905603855848312, z: -0.306582510471344} ]; const arrayWithoutDuplicates = Array.from( new Set(vectors.map(v => JSON.stringify(v))), json => JSON.parse(json) );No importa, finalmente encontré una respuesta en otro hilo aquí.
var result = arr.reduce((unique, o) => { if(!unique.some(obj => obj.x === ox && obj.y === oy && obj.z === oz)) { unique.push(o); } return unique; },[]); console.log(result);Eliminar valores duplicados de una matriz de objetos en javascript