¿Cuál es el problema de este código? está mostrando falso. esto debería ser cierto.
function isSpecialArray(arr) { for(i=0; i<arr.length; i++){ return ((arr[i % 2 == 0]) % 2 == 0) && ((arr[i % 2 !==0]) % 2 !== 0) } } console.log(isSpecialArray([2, 7, 4, 9, 6, 1, 6, 3])) // false??Puede simplificar su código y evitar bucles innecesarios tan pronto como se encuentre el primer elemento que rompe la regla.
for function isSpecial(arr) { for (let i = 0; i < arr.length; i++) { if (arr[i] % 2 !== i % 2) return false } return true; }Array.prototype.every function isSpecial(arr) { return arr.every((item, index) => item % 2 === index % 2); }Su return ((arr[i % 2 == 0]) % 2 == 0) && ((arr[i % 2 !==0]) % 2 !== 0) la sintaxis es incorrecta. Espero que la siguiente función cumpla con sus requisitos.
Lógica
isNodeSpecialisSpecial de la matriz.isSpecial y isNodeSpecial .isSpecial se establece en falso y sale del bucle. function isSpecialArray(arr) { let isSpecial = true; for (i = 0; i < arr.length && isSpecial; i++) { const isNodeSpecial = (i % 2 === 0) ? arr[i] % 2 === 0 : arr[i] % 2 === 1; isSpecial = isSpecial && isNodeSpecial; } return isSpecial; } console.log(isSpecialArray([2, 7, 4, 9, 6, 1, 6, 3])); // true console.log(isSpecialArray([2, 7, 4, 10, 6, 1, 6, 3]));// falsePuede comprobar si algún elemento no cumple la condición e inmediatamente devolver false . Si todos los elementos cumplen la condición, devuelve true . Esa es la mejor solución cuando se trata de rendimiento. Puedes cambiar tu código así:
function isSpecialArray(arr) { for (i = 0; i < arr.length; i++) { if (arr[i] % 2 !== i % 2) return false; } return true; } console.log(isSpecialArray([2, 7, 4, 9, 6, 1, 6, 3])) //true console.log(isSpecialArray([1, 7, 4, 9, 6, 1, 6, 3])) //false