con fines de aprendizaje, quiero obtener cada segundo elemento de una matriz. Tuve éxito con un bucle for:
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; function filterEverySecond(arr) { let everySecondEl = []; for (let i = 0; i < arr.length; i += 2) { everySecondEl.push(arr[i]); } return everySecondEl; } console.log({ numbers, result: filterEverySecond(numbers) });Ahora quiero lograr lo mismo sin un bucle for, pero usando métodos de matriz (forEach, filter, map o reduce). ¿Alguien puede recomendar qué método sería mejor aquí?
puedes hacerlo facilmente con filter
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; const filtered = numbers.filter((_, i) => i % 2 === 0) console.log(filtered)simplemente filtra los elementos que tienen un índice impar
Puede usar el filter y verificar si el índice del elemento de matriz actual es divisible por 2:
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; console.log({ numbers, result: numbers.filter((_, index) => index % 2 === 0) });Podría usar un para cada ciclo así para obtener el mismo resultado deseado:
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; const result = []; numbers.forEach(number => { if (number % 2 != 0) { result.push(number); } }); console.log(numbers); console.log(result); El operador de módulo devuelve el resto de los dos números cuando se dividen. Por ejemplo: 1 % 2 devolverá 1 como resto. Entonces, en la declaración if estamos verificando si el número no es divisible por 2 .