Si tengo una matriz const a = [1, 2] y una matriz const nested = [[1,2], [2,3]]
¿Cómo verifico si la matriz a está nested ?
Intenté usar nested.includes(a) , pero no proporciona el resultado correcto. Y estaba pensando en stringificar la matriz a , pero leí algunos comentarios sobre que no deberíamos comparar la matriz usando stringify.
Entonces, ¿cuál es una forma adecuada de verificar si una matriz está en otra matriz?
includes no funciona correctamente ya que compara referencias: a y nested[0] son diferentes en términos de referencias.
Eche un vistazo a la siguiente función:
function includesDeep(array, value) { return array.some((subArray) => { return subArray.every( (subArrayElem, index) => subArrayElem === value[index] ); }); } Tenemos que iterar sobre todos los elementos de la matriz dada y comprobar si cada elemento de esta submatriz es idéntico al elemento correspondiente de la segunda matriz (su a ). Este método detecta las discrepancias de tipo.
Puede ordenar las matrices para comparar si son iguales en la devolución de llamada de Array.some :
const a = [1, 2] const nested = [[1,2], [2,3]] const containsA = nested.some(e => JSON.stringify(e) == JSON.stringify(a)) console.log(containsA);si debe compararlo sin stringificación, anteponga una identificación única a los valores y compárelo.