Fictizia / Curso-JS-Avanzado-para-desarrolladores-Front-end_ed4

FICTIZIA » JavaScript Avanzado para desarrolladores Front-end — 4ª Edición
http://www.fictizia.com/formacion/curso_javascript_avanzado
GNU Affero General Public License v3.0
35 stars 20 forks source link

Programación iterativa ... ¿o declarativa? #9

Closed UlisesGascon closed 5 years ago

UlisesGascon commented 5 years ago
/* === DETALLES ===
- Una dimension
- Me quedo con los < 5
- Y genero la lista final con elemento *10
- De mayor a menor
- Objetivo Final: [40,30,20,10]
*/

var matrix = [[5,8], [3], [4,2,6,1], [7,9]];

var lista = [] 
for (var i = 0; i < matrix.length; i++) {
    //var nivel = matrix[i];
    for (var j = 0; j < matrix[i].length; j++) {
        lista.push(matrix[i][j])
    }
}

// Y mucho más ruido iterativo :-(

// +ES5.1
var matrix = [[5,8], [3], [4,2,6,1], [7,9]];
var lista = matrix
        .reduce(function(a,b){return a.concat(b)})
        .filter(function(item){ return item < 5})
        .map(function(item){return item*10})
        .sort()
        .reverse()

// +ES6

const matrix = [[5,8], [3], [4,2,6,1], [7,9]];
const lista = matrix
        .reduce((a,b) => a.concat(b))
        .filter(item => item < 5)
        .some(item => item*10)
        .sort()
        .reverse()

console.log("lista:", lista)