const myArray = [ [2, 4], "cat", "hamster", 9 ] console.log(myArray.includes("cat")) console.log(myArray.includes([2, 4]))la salida es verdadera, falsa. ¿incluye () no funciona para matrices dentro de matrices? Gracias
Debido a que Array en js es un objeto específico, el [2,4] dentro de myArray es un objeto y el [2,4] al que cambia incluye es otro objeto. Si quieres que incluya return true debes hacer esto:
var array = [2, 4] const myArray = [array, "cat", "hamster", 9] console.log(myArray.includes(array))Una cadena es un tipo de valor, por lo que una comparación entre dos cadenas comparará el valor de esas cadenas. En su caso el valor cat . Sin embargo, una matriz es un objeto con comparación de referencia, no comparación de valor. Entonces, al comparar dos matrices, se comparará la referencia. Es decir, si compara el mismo objeto consigo mismo, el resultado será verdadero. Sin embargo, como es el caso en su ejemplo, si compara dos objetos diferentes incluso con todas las propiedades establecidas en el mismo valor, el resultado será falso.
let a = [1,2]; let b = 2; let c = "string"; let d = [1,2]; a === a; //true reference comparison comparing an object to itself b === 2; //true value comparison c === "string"; //true again value comparison, even though it's two different objects a === d; //false the values are the same but it's reference comparisonArray.includes itera a través de la matriz y hace una comparación entre el argumento y los elementos individuales utilizando los tipos de comparación anteriores según los tipos.
También es importante tener en cuenta que include utiliza una comparación estricta. Es decir, si una comparación con === da como resultado true , entonces includes incluiría. No es suficiente que == resulte en verdadero. "2" == 2 es un ejemplo de una comparación que devuelve verdadero donde ["2"].includes(2) devuelve falso