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
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
Top comments (6)
Ha pasado un tiempo, no estuve al tanto pero acá ando entrenando en algoritmos. Esta es mi solución:
buena solución, yo estuve probando y pude hacerlo de 2 formas
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;
}
}
Esta solución me dejó sin dentadura jajaja, porque de todas maneras al final lo que importa es saber si el valor existe, más nada.
Al final así quedaría más simplificado:
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;
}
super, esa función recursiva, una maravilla