¿Alguien podría guiarme sobre cómo encontrar un elemento en una matriz?
Siempre obtengo falso para los elementos que existen.
Gracias.
arr = new Array; arr.push({x: "a", y: 1}); arr.push({x: "b", y: 2}); arr.push({x: "c", y: 3}); elem = {x: "c", y: 3}; if (arr.includes(elem)){ console.log('true'); } else { console.log('false'); }Está buscando el objeto {x: "c", y: 3} en arr y nunca será igual a ningún otro objeto porque {} !== {} .
Recuerde: los objetos se comparan con la referencia , pero las primitivas se verifican por su valor .
En su código, está verificando una referencia de objeto con otra referencia, que no es igual, por eso registra false .
Si hay una matriz de números, entonces debe usar include como:
const arr = [10, 20, 30]; if(arr.includes(20)) console.log("true"); else console.log("false");Puede usar find para encontrar el elemento en la matriz
const arr = new Array(); arr.push({ x: "a", y: 1 }); arr.push({ x: "b", y: 2 }); arr.push({ x: "c", y: 3 }); const elem = { x: "c", y: 3 }; if (arr.find((o) => ox === elem.x && oy === elem.y)) { console.log("true"); } else { console.log("false"); }dado que está trabajando con una matriz 2d, creo que su objeto siempre será el mismo para X e Y, por lo que le sugiero que haga una función como esa para usarla más en su código
arr = new Array; arr.push({x: "a", y: 1}); arr.push({x: "b", y: 2}); arr.push({x: "c", y: 3}); elem = {x: "c", y: 3}; console.log(findXY(arr,elem)) function findXY(arr,val){ return arr.find(each=>{ return each.x == val.x && each.y == val.y }) }