Estoy tratando de escribir una función que verifique si un número existe en una matriz determinada o no. El número que he decidido verificar es "7" y quiero obtenerlo incluso si es parte de un número. por ejemplo, 97... Soy un novato en javascript, así que agradecería mucho si alguien pudiera explicar la solución en detalle... También he adjuntado mi ejemplo de código.
function sevenBoom(arr) { let singleElement; let string; let includeSeven; for (let i=0; i<arr.length; i++){ singleElement = arr[i]; string = singleElement.toString(); includeSeven = string.includes("7"); } if (includeSeven == true){ return "Boom!" }else{ return "There is no 7 in the array"; } } arr = [1,2,4,5,6,7,8,9]; let result = sevenBoom(arr); console.log(result);Simplemente puede usar arr.some(a => a.toString().includes(7));
some() será más eficiente ya que se detendrá en la primera condición coincidente y no irá más allá para verificar el resto de los valores en la matriz. Use .toString() para convertir number en una string y luego podemos usar includes para verificar si los valores están presentes en esa cadena o no. Más detalles con respecto a los métodos se proporcionan a continuación.
Array.prototype.some() : el método some() prueba si al menos un elemento de la matriz pasa la prueba implementada por la función proporcionada. Devuelve verdadero si, en la matriz, encuentra un elemento para el cual la función proporcionada devuelve verdadero; de lo contrario, devuelve falso. No modifica la matriz.
String.prototype.includes() : el método include includes() realiza una búsqueda que distingue entre mayúsculas y minúsculas para determinar si una cadena se puede encontrar dentro de otra cadena, devolviendo true o false según corresponda.
Array.prototype.includes() : El método include( includes() determina si una matriz incluye un cierto valor entre sus entradas, devolviendo true o false según corresponda.
Pruébalo a continuación.
let arr = [1,2,4,5,6,7,8,9]; let result = arr.some(a => a.toString().includes(7)); console.log(result); let arr2 = [1,97]; let result2 = arr2.some(a => a.toString().includes(7)); console.log(result2); let arr3 = [1,6]; let result3 = arr3.some(a => a.toString().includes(7)); console.log(result3)Hay múltiples soluciones que funcionarían. Estoy discutiendo un enfoque que es bastante simple de entender.
function sevenBoom(arr) { // Initial array: [1, 2, 4, 5, 6, 7, 8, 9] // "map" will convert the number array to string array // Array after map: ["1", "2", "4", "5", "6", "7", "8", "9"] // "join" will join all the string numbers // Joined string: "12456789" // "includes" will check if "7" is in the joined string const hasSeven = arr.map(n => `${n}`).join("").includes("7"); return hasSeven ? "Boom!" : "There is no 7 in the array"; }; let result = sevenBoom([1,2,4,5,6,7,8,9]); console.log(result); result = sevenBoom([1,97]); console.log(result); result = sevenBoom([1,2]); console.log(result);El problema con su código es que tiene que salir de la ejecución del bucle for, cuando encuentre una ocurrencia de siete, de lo contrario iterará la matriz completa y su variable includeSeven solo contendrá el último resultado de comparación.
Aquí su ciclo se ejecutará contra cada elemento en la matriz arr . Cuando el ciclo ejecuta el elemento 7 en la matriz, establecerá includeSeven como verdadero. Pero el bucle se ejecuta más y evalúa el resto de los elementos 8 y 9 . Entonces includeSeven el resultado de la última ejecución. Por lo tanto, debe salir del bucle cuando tenga una coincidencia.
violín de trabajo
function sevenBoom(arr) { let singleElement; let string; let includeSeven; for (let i = 0; i < arr.length; i++) { singleElement = arr[i]; string = singleElement.toString(); includeSeven = string.includes("7"); if (includeSeven) { i = arr.length; // Implementation of break } } if (includeSeven == true) { return "Boom!" } else { return "There is no 7 in the array"; } } arr = [1, 2, 4, 5, 6, 7, 8, 9]; console.log(sevenBoom(arr));O
Función simple de una línea que verifica que haya algún elemento en la matriz que tenga 7 como dígito en algún lugar de los elementos usando Array.some y String.includes .
Aquí Array.some comprobará si al menos un elemento de la matriz coincide con la condición que especificamos. String.includes si la cadena orr incluye un elemento específico. Entonces verificamos que cualquiera de los elementos en la matriz tenga una cadena 7
violín de trabajo
sevenBoom = (arr) => arr.some((item) => item.toString().includes("7")) ? "Boom!" : "There is no 7 in the array"; arr = [1, 2, 4, 5, 6, 7, 8, 9]; console.log(sevenBoom(arr));