I have an array full of triangles. Triangles are composed of 3 Point objects (x and y coordinates). Some triangles are composed of the same points but in different order with previous as seen from the pictures. How can I filter out these duplicates? NOTE: I supplied the code which is not working below.
let cleanedTriangles = [];
for (let i = 0; i < triangles.length; i++)
{
if (i = 0)
{
cleanedTriangles.push(triangles[i])
}
else
{
for (let j = 0; j < cleanedTriangles.length; j++)
{
if (
!((triangles[i].p1.x === cleanedTriangles[j].p1.x || triangles[i].p1.x === cleanedTriangles[j].p2.x || triangles[i].p1.x === cleanedTriangles[j].p3.x)
&&
(triangles[i].p2.x === cleanedTriangles[j].p1.x || triangles[i].p2.x === cleanedTriangles[j].p2.x || triangles[i].p2.x === cleanedTriangles[j].p3.x)
&&
(triangles[i].p3.x === cleanedTriangles[j].p1.x || triangles[i].p3.x === cleanedTriangles[j].p2.x || triangles[i].p3.x === cleanedTriangles[j].p3.x)
&&
(triangles[i].p1.y === cleanedTriangles[j].p1.y || triangles[i].p1.y === cleanedTriangles[j].p2.y || triangles[i].p1.y === cleanedTriangles[j].p3.y)
&&
(triangles[i].p2.y === cleanedTriangles[j].p1.y || triangles[i].p2.y === cleanedTriangles[j].p2.y || triangles[i].p2.y === cleanedTriangles[j].p3.y)
&&
(triangles[i].p3.y === cleanedTriangles[j].p1.y || triangles[i].p3.y === cleanedTriangles[j].p2.y || triangles[i].p3.y === cleanedTriangles[j].p3.y)
)
)
{
cleanedTriangles.push(triangles[i])
}
}
}
}
function Point(x, y)
{
this.x = x || 0;
this.y = y || 0;
}
function Triangle(point1, point2, point3)
{
this.p1 = point1 || new Point(0, 0);
this.p2 = point2 || new Point(0, 0);
this.p3 = point3 || new Point(0, 0);
}


id?