Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

123
Vistas
organiza los artículos por categoría

Tengo que escribir una función, organicItems, que organice los elementos por categoría. El argumento de la función es una matriz de objetos de elementos. Cada objeto de elemento tiene 3 propiedades, categoría (cadena), itemName (cadena) y onSale (booleano).

 var itemData = [ { category: 'fruit', itemName: 'apple', onSale: false }, { category: 'canned', itemName: 'beans', onSale: false }, { category: 'canned', itemName: 'corn', onSale: true }, { category: 'frozen', itemName: 'pizza', onSale: false }, { category: 'fruit', itemName: 'melon', onSale: true }, { category: 'canned', itemName: 'soup', onSale: false }, ];

El valor devuelto debe ser un objeto con propiedades de categoría. Cada valor de propiedad es una matriz de artículos que pertenecen a esa categoría y tener onSale establecido en verdadero debe tener '($)' agregado al nombre de su artículo. Este es un ejemplo de lo que estoy tratando de hacer:

 { fruit: ['apple', 'melon($)'], canned: ['beans', 'corn($)', 'soup'], frozen: ['pizza'] };

Hasta ahora esto es lo que tengo:

 var codeObj = {}; for(var i = 0; i < itemData.length; i++){ for(key in itemData[i]){ codeObj[itemData[i].category] = Object.values([itemData[i].itemNames])

Esto es lo que se envió a la consola:

 { fruit: [ undefined ], canned: [ undefined ], frozen: [ undefined ] }
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

hola yo lo hice asi.

 const obj = {}; itemData.map((item, index) => { let objKeys = Object.keys(item); objKeys.forEach((k) => { if (k === "category") { if (!obj[item[k]]) { obj[item[k]] = []; } if (!obj[item[k]].find((i) => i === item.itemName)) { obj[item[k]].push( item.onSale ? `${item.itemName}($)` : item.itemName ); } } }); }); console.log("obj", obj);
about 4 years ago · Juan Pablo Isaza Denunciar

0

mi manera

 const itemData = [ { category: 'fruit', itemName: 'apple', onSale: false } , { category: 'canned', itemName: 'beans', onSale: false } , { category: 'canned', itemName: 'corn', onSale: true } , { category: 'frozen', itemName: 'pizza', onSale: false } , { category: 'fruit', itemName: 'melon', onSale: true } , { category: 'canned', itemName: 'soup', onSale: false } ] const result = itemData.reduce((r,{category,itemName,onSale})=> { r[category] = r[category] || [] r[category].push( itemName + (onSale?'($)':'')) return r },{}) // show result console.log( JSON.stringify(result) .replace(`{"`,`\nresult =\n { `) .replace(/"],"/g,`' ]\n , `) .replace(`"]}`,`' ]\n }`) .replace(/":\["/g,`: [ '`) .replace(/","/g,`', '`))
 .as-console-wrapper {max-height: 100%!important;top:0 }

about 4 years ago · Juan Pablo Isaza Denunciar

0

Esta solución funciona

 function organizeItems(itemData) { let obj = {} for(i=0; i<itemData.length; i++) { let item = itemData[i] for(key in item) { if(key === 'category') { if(!obj[item[key]]) { obj[item[key]] = [] } if(obj[item[key]]) { obj[item[key]].push(item.onSale ? `${item.itemName}($)` : `${item.itemName}`) } } } } return obj }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda