Soy un principiante en la escritura de código JS y tengo una pregunta sobre la función isSorted.
Se supone que debo usar for-of-loop en el código.
Aquí está la tarea:
Declara una función ordenada.
/** * @param {Array<number>} ??? - an array of numbers * @returns {boolean} whether or not the given array is sorted */Esto es lo que escribí
function isSorted(array) { const result = []; for (const number of array) { if (number < number1 && number2 ) { result.push(number); } return true; } }Aquí está el mensaje de error que me sale
Aquí está la prueba que no pude pasar con mi código anterior
actual = isSorted([1, 2, 3]); expected = true; if (actual === expected) { console.log("Test PASSED."); } else { console.error("Test FAILED. Keep trying!"); console.group("Result:"); console.log(" actual:", actual); console.log("expected:", expected); console.groupEnd(); } actual = isSorted([3, 2, 3]); expected = false; if (actual === expected) { console.log("Test PASSED."); } else { console.error("Test FAILED. Keep trying!"); console.group("Result:"); console.log(" actual:", actual); console.log("expected:", expected); console.groupEnd(); }Puede comparar el i-ésimo elemento de la matriz con el siguiente. Si un elemento es mayor que el siguiente, la matriz no se ordena
function isSorted(array) { for (let i = 0; i < array.length; ++i) { if (array[i + 1]) { if (array[i] > array[i + 1]) { return false; } } } return true; }O puede reducir su matriz a un valor booleano (ver Array.prototype.reduce() ):
function isSorted(array) { return array.reduce((prev, cur) => prev !== false && cur >= prev && cur) } donde prev es el valor resultante de la iteración anterior y cur el elemento de la iteración actual.
Pruebe esta función ordenada:
function isSorted(array) { let previousNo = null; for (const number of array) { if (previousNo != null && number < previousNo) { return false; } previousNo = number; } return true; }Todavía usa el bucle for..of, y esto es lo que está haciendo:
Esta función compara los miembros de la matriz: el primero con el segundo, el segundo con el tercero... etc. Si el siguiente miembro de la matriz es menor que el real, devuelve falso (la matriz no está ordenada).
function isSorted(array) { for (var i = 0; i<array.length; i++) { if (array[i] > array[i+1]) { return false; } } return true; }