Created
December 9, 2021 11:47
-
-
Save juniorgarcia/0cb71f45a97046b577106a618ae2c523 to your computer and use it in GitHub Desktop.
Array.every e Array.some
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Arrays tem um método para avaliar se todos os itens | |
* correspondem a uma condição: o método "every" | |
* | |
* O argumento que ele aceita é uma função que recebe um item do array por | |
* iteração, e, caso essa função retorne `truthy` para todos os elementos, | |
* Array.every retorna `true`, confirmando que todos os itens do seu array | |
* correspondem a essa condição. | |
* | |
* Vamos fazer um exercício: dado um array de números inteiros, verifique se | |
* todos são pares | |
*/ | |
// Função de teste | |
const isEven = (n) => n % 2 === 0 | |
// loga "true", porque todos os valores do array são pares | |
console.log([2, 4, 6].every(isEven)) | |
// loga "false", porque 1 não é par | |
console.log([1, 2, 4].every(isEven)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Verifica se todos os itens do array correspondem a condição imposta por | |
* `fn`. | |
* @param {*} array | |
* @param {Function} fn | |
* @returns {Boolean} | |
*/ | |
const every = (array, fn) => { | |
for (i = 0; i < array.length; i++) { | |
if (!fn(array[i])) return false | |
} | |
return true | |
} | |
// Testa se um número é maior que 10 | |
const gtZero = (n) => n > 10 | |
// Loga "false", porque 1 é menor que 10 | |
console.log(every([1, 20, 30, 40, 50], gtZero)) | |
// Loga "true", porque todos os números são maiores que 10 | |
console.log(every([11, 20, 30, 40, 50], gtZero)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* E agora, por diversão, vamos implementar nossas próprias versões de | |
* Array.some e Array.every como funções puras. | |
*/ | |
/** | |
* Verifica se pelo menos um item do array corresponde a condição imposta por | |
* `fn`. | |
* @param {*} array | |
* @param {Function} fn | |
* @returns {Boolean} | |
*/ | |
const some = (array, fn) => { | |
for (i = 0; i < array.length; i++) { | |
if (fn(array[i])) return true | |
} | |
return false | |
} | |
// Testa se um número é maior que 10 | |
const gtZero = (n) => n > 10 | |
// Loga "false", porque todos os números são menores que 10 | |
console.log(some([1, 2, 3, 4, 5], gtZero)) | |
// Loga "true", porque 30 é maior que 10 | |
console.log(some([1, 2, 30, 4, 5], gtZero)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Assim como `every`, `some` testa condições nos itens do array, mas nesse caso | |
* ele retorna true se pelo menos um item satisfaz a condição. | |
* Dessa vez, vamos verificar se algum item do array é menor que zero | |
*/ | |
// Função de teste | |
const ltZero = (n) => n < 0 | |
// loga "true", porque -42 é menor que zero | |
console.log([2, 4, 6, -42].some(ltZero)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment