Tengo una matriz de datos de objeto llamada lugar. Cuando la matriz de lugar ingresa a la función de solución, si el objeto en el lugar tiene un TIPO llamado 'CAJA', quiero extraer solo la matriz de ID de lugar con TIPO 'CAJA' restando los datos de TIPO de "CONTENEDOR". Además, si no hay 'BOX' TPYE y solo TIPO DE CONTENEDOR, quiero extraer solo la matriz placeId con "CONAINER" TPYE.
Intenté usar la función de mapa y la función de filtro en la instrucción if, pero no pudo extraer los datos y mi código tampoco se ve bien. ¿Cómo arreglo el código?
const place = [ {type: "CONTAINER", placeId: 252 } ] const place = [ {type: "CONTAINER", placeId: 252 }, {type: "BOX", placeId: 257}, {type: "BOX", placeId: 258} ] function solution(place) { if(plaecs.map((v) => v.type === 'BOX')) { return plaecs.filter((v) => v.type !== 'CONTAINER') } else if (plaecs.map((v) => v.type !== 'BOX')) { return plaecs.filter((v) => v.type === "CONTAINER") } } solution(place) </script> </body> </html> solution(place) expected answer : [252] solution(place) expected answer : [ 257, 258]El método map devuelve una matriz. Usar if (someArray) siempre irá al cuerpo de if , porque todas las matrices son verdaderas (incluso las vacías).
Probablemente estés buscando some método:
if (plaecs.some((v) => v.type === 'BOX')) { El método some determina si algún elemento de la matriz coincide con el predicado definido por la devolución de llamada:¹ llama a su devolución de llamada con el primer elemento de la matriz y, si la devolución de llamada devuelve un valor verdadero, se detiene y devuelve true ; de lo contrario, llama a la devolución de llamada con el segundo elemento de la matriz y aplica la misma lógica; etc. Si ninguna llamada a la devolución de llamada devuelve un valor verdadero, some devuelven false (incluso en una matriz vacía).
¹ Entonces, ¿por qué se llama some en lugar de any ? Debido a que se agregó en 2009, y algunas bibliotecas ya estaban agregando un método any a las matrices con una semántica ligeramente diferente, y el análisis del código existente mostró que agregar any rompería ese código. Así que eligieron el segundo mejor nombre: some .