Skip to content

Instantly share code, notes, and snippets.

@devCharles
Created June 18, 2020 07:34

Revisions

  1. devCharles created this gist Jun 18, 2020.
    57 changes: 57 additions & 0 deletions hashTables.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,57 @@
    const productosComprados = [
    { name: 'arroz', precio: 1, unidad: '1kg' },
    { name: 'frijoles', precio:6, unidad: '2kg' },
    { name: 'coca', precio: 3, unidad: '500ml' },
    { name: 'frijoles', precio: 6, unidad: '2kg' },
    { name: 'coca', precio: 3, unidad: '500ml' },
    { name: 'frijoles', precio: 6, unidad: '2kg' },
    { name: 'chocolate', precio: 7, unidad: 'barra'}
    ]

    /*
    name conteo
    arroz 1
    frijoles 3
    coca 2
    {
    arroz: 1,
    frijoles: 3,
    coca: 2
    }
    */

    // hashtables
    const productosUnicos = productosComprados.reduce((hash, producto) => {
    const { name } = producto // frijoles

    const conteo = hash[name] // { arroz: 1, frijoles: 1, coca: 1 } .frijoles => 1 + 1 = 2
    ? hash[name] + 1 // hash.frijoles + 1
    : 1

    return {
    ...hash,
    [name]: conteo
    } // { arroz: 1, frijoles: 2, coca: 1 } [ ['arroz', 1], [ 'frijoles', 2 ] ]
    }, {})

    const orden = Object.entries(productosUnicos).map(([key, conteo]) => {
    const [ key, conteo ] = item

    const itemData = productosComprados.find(p => p.name === key)

    return {
    name: key,
    conteo,
    total: conteo * itemData.precio,
    ...itemData
    }
    })

    const total = orden.reduce((suma, item) => suma + item.total, 0)



    console.log('productosUnicos: ', productosUnicos)
    console.log('orden: ', orden )
    console.log('total: ', total )