Tengo un pequeño proyecto en el que tengo que hacer una lista de compras (para ensalada de frutas) que permite al usuario agregar productos y establecer precios para ellos. Me las arreglé para hacer esto hasta ahora que el indicador "final" muestra todos los productos y precios agregados para el usuario. El problema es que debería mostrar todo esto de menor a mayor según el precio. He intentado buscar información sobre esto pero no he encontrado nada relevante. Hay alguna ayuda para mi? ¡Gracias de antemano!
var count = 0; var fruitSaladItems = []; var ingredient=true; while (ingredient && count<22) { count++ ingredient= prompt("Enter the fruit salad ingredients"); if(ingredient){ var price=prompt("Enter the price"); fruitSaladItems.push(ingredient+" €"+price); } } alert(fruitSaladItems.join(','));Aquí puedes ver el código editado:
var count = 0; var fruitSaladItems = []; var ingredient=true; while (ingredient && count<22) { count++ ingredient = prompt("Enter the fruit salad ingredients"); if (ingredient) { var price = parseFloat(prompt("Enter the price")); fruitSaladItems.push({ ingredient, price }); } } alert(fruitSaladItems.join(','));Lo más importante que debe hacer para facilitar este problema es mantener una lista de objetos que representen los ingredientes en lugar de una lista de cadenas interpoladas como "manzana 1,50 €". Cuando almacena objetos (que contienen el nombre del ingrediente y el precio), ahora tiene los datos de origen en un formato que es flexible y se puede usar para todo tipo de cosas, como clasificar por nombre de ingrediente, clasificar por precio (ascendente o descendente) , filtrado por nombre o precio, etc.
Por lo general, es mejor almacenar y manipular los datos de forma elemental y solo transformarlos en algo derivado, como la descripción "manzana 1,50 €", en el momento en que necesite hacerlo.
Aquí hay un ejemplo que se ejecuta fuera del navegador y tiene datos creados previamente:
const fruitSaladItems = []; fruitSaladItems.push({ ingredient: "grape", price: 5.2 }); fruitSaladItems.push({ ingredient: "apple", price: 3.99 }); fruitSaladItems.push({ ingredient: "orange", price: 1.3 }); fruitSaladItems.push({ ingredient: "plum", price: 1.5 }); fruitSaladItems.sort((a, b) => a.price - b.price); const descriptions = fruitSaladItems.map( (item) => `${item.ingredient} €${item.price.toFixed(2)}` ); console.log(descriptions.join(", "));En su código, para completar la matriz de elementos, podría usar:
let count = 0; const fruitSaladItems = []; let ingredient=true; while (ingredient && count<22) { count++ ingredient = prompt("Enter the fruit salad ingredients"); if (ingredient) { const price = parseFloat(prompt("Enter the price")); fruitSaladItems.push({ ingredient, price }); } } fruitSaladItems.sort((a, b) => a.price - b.price); const descriptions = fruitSaladItems.map( (item) => `${item.ingredient} €${item.price.toFixed(2)}` ); console.log(descriptions.join(", "));