Entonces, tengo las siguientes matrices de números impares:
const oddNums = [1, 3, 5, 7, 9];Y quiero llenarlo con los números pares que faltan para obtener el siguiente resultado:
[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]Lo he hecho así y funciona bien, pero ¿se puede hacer de una manera más concisa, tal vez usando métodos de matriz?
const oddNums = [1, 3, 5, 7, 9]; const nums = []; for (let i=0; i<oddNums.length; i++) { nums.push(oddNums[i]); nums.push(oddNums[i] + 1); } console.log(nums); Nota: Los números impares siempre estarían en secuencia, pero es posible que no comiencen con 1 , por ejemplo: [11, 13, 15] es una matriz válida. Y la salida para [11, 13, 15] debería ser [ 11, 12, 13, 14, 15, 16 ] .
La única información que necesita es el primer número (impar) y el tamaño de la entrada:
const oddNums = [1, 3, 5, 7, 9]; const result = Array.from({length: oddNums.length*2}, (_, i) => i + oddNums[0]); console.log(result);Usando Array.prototype.flatMap :
const oddNums = [1, 3, 5, 7, 9], nums = oddNums.flatMap(n => [n, n + 1]); console.log(nums);Usando Array.prototype.reduce y Array.prototype.concat :
const oddNums = [1, 3, 5, 7, 9], nums = oddNums.reduce((r, n) => r.concat(n, n + 1), []); console.log(nums);Usando Array.prototype.reduce y Array.prototype.push :
const oddNums = [1, 3, 5, 7, 9], nums = oddNums.reduce((r, n) => (r.push(n, n + 1), r), []); console.log(nums);