Estoy tratando de comparar 2 matrices donde sigue la primera respuesta de la matriz:
response= [ { organization: { id: '75f1e2e1-83eb-484e-bdaf-1da9b57c635d' }, { organization: { id: '810d0465-2917-4d67-802a-69cda41647ad' } ]segunda matriz
expectedResponse= [ { organization: { id: '810d0465-2917-4d67-802a-69cda41647ad' }, organization: { id: '75f1e2e1-83eb-484e-bdaf-1da9b57c635d' } ]La función que escribí para comparar 2 matrices para la afirmación es la siguiente
response.body.forEach(function (index) { expect(response.body[index].organization.id).to.eql( expectedResponse[index].organization.id );Pero está fallando con AssertionError: se esperaba que '75f1e2e1-83eb-484e-bdaf-1da9b57c635d' fuera profundamente igual a '810d0465-2917-4d67-802a-69cda41647ad'
Como el orden es diferente en cada matriz para los ID de la organización. ¿Cómo puedo comparar si el orden es diferente para hacer pasar esta afirmación?
Como ha dicho, dado que el orden es diferente, no puede hacer esto con un solo pase.
Tiene al menos un par de opciones, cada una de las cuales haría después de comprobar que las matrices tienen la misma longitud (ya que si no la tienen, no coinciden entre sí):
Ordene las matrices (copiándolas primero si ordenar los originales no está bien) y luego use lo que tenga para comparar los resultados, ya que estarán en el mismo orden.
Busque coincidencias de forma independiente del orden, como por ejemplo:
findIndex o find para ver que la matriz B tiene cada uno de sus valoresSet de valores de id de la matriz A, y luego recorriendo la matriz B asegurándose de que estén todos en el conjunto(Nuevamente, en ambos casos, comienza asegurándose de que tengan la misma longitud).
Probablemente también querrá asegurarse de que los valores de id sean únicos.