DEV Community

Cristian Fernando
Cristian Fernando

Posted on

Advent.js🎅🏼| #7: Buscando en el almacen...

Buscando en el almacen...

Mi amigo Dani está trabajando en una tienda y con la llegada de las navidades tiene el almacén hecho un desastre y no encuentra nada.

Vamos a crear una función contains que recibe dos parámetros: un objeto que define el almacén y el producto que buscamos.

La función debe devolver un booleano que indique si se encuentra el string como valor en algún nivel del objeto. Veamos unos ejemplos:

const almacen = {
  'estanteria1': {
    'cajon1': {
      'producto1': 'coca-cola',
      'producto2': 'fanta',
      'producto3': 'sprite'
    }
  },
  'estanteria2': {
    'cajon1': 'vacio',
    'cajon2': {
      'producto1': 'pantalones',
      'producto2': 'camiseta' // <- ¡Está aquí!
    }
  }
}

contains(almacen, 'camiseta') // true

const otroAlmacen = {
  'baul': {
    'fondo': {
      'objeto': 'cd-rom',
      'otro-objeto': 'disquette',
      'otra-cosa': 'mando'
    }
  }
}

contains(otroAlmacen, 'gameboy') // false
Enter fullscreen mode Exit fullscreen mode

Ten en cuenta que la tienda es enorme. Tiene diferentes almacenes y, como has visto en los ejemplos, cada uno puede tener diferentes organizaciones. Lo importante es buscar que el producto está en los almacénes.

Completa el reto!


Mi solución:


Puedes seguir a @midudev y estar pendiente de los retos de Advent.js

Discussion (4)

Collapse
alexaguilarp profile image
Alex

buena solución, yo estuve probando y pude hacerlo de 2 formas

Collapse
alexaguilarp profile image
Alex

aunque esta es hacer trampa creo yo
export default function contains(store, product) {
// ¡Y no olvides compartir tu solución en redes!
let contenido = JSON.stringify(store);
console.log(contenido);
let buscar = ':"' + product + '"';
let valor = contenido.includes(buscar);
if (valor) {
return true;
} else {
return false;
}
}

Collapse
alexaguilarp profile image
Alex • Edited on

y esta creo que es la mejor opción que logre hacer
export default function contains(store, product) {
// ¡Y no olvides compartir tu solución en redes!
let contenido = convertirArray(store)
console.log(contenido)
let buscar = contenido.find( element => element == product)
if (buscar){
return true
}else{
return false
}

}
function convertirArray(obj) {
let resultado = [];
for (const prop in obj) {
const valor = obj[prop];
if (typeof valor === 'object') {
resultado = resultado.concat(convertirArray(valor))
}
else {
resultado.push(valor);
}

}
return resultado;
}

Collapse
bsquiroz profile image
brayan stiven muñoz quiroz

super, esa función recursiva, una maravilla