Node.js命令行购物清单开发:关联商品与价格并筛选最值
Node.js命令行购物清单程序:关联商品与价格并展示最值
核心问题在于你之前应该是把商品名称和价格拆分存储在不同数组中,导致两者无法对应。正确的做法是用对象数组保存每个商品的完整信息(名称+价格),这样在查找价格最值时就能直接关联到对应的商品名称。
完整代码示例
const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); const shoppingList = []; function askForItem() { rl.question('请输入商品名称(输入"结束"停止添加):', (itemName) => { if (itemName === '结束') { if (shoppingList.length === 0) { console.log('购物清单为空'); rl.close(); return; } // 遍历数组找出价格最值对应的商品 let maxItem = shoppingList[0]; let minItem = shoppingList[0]; shoppingList.forEach(item => { if (item.price > maxItem.price) maxItem = item; if (item.price < minItem.price) minItem = item; }); console.log('\n购物清单统计:'); console.log(`价格最高的商品:${maxItem.name},价格:${maxItem.price}元`); console.log(`价格最低的商品:${minItem.name},价格:${minItem.price}元`); rl.close(); return; } rl.question(`请输入${itemName}的价格:`, (priceStr) => { const price = parseFloat(priceStr); if (isNaN(price) || price <= 0) { console.log('请输入有效的正数价格'); askForItem(); return; } // 将商品名称与价格绑定为对象存入数组 shoppingList.push({ name: itemName, price: price }); askForItem(); }); }); } askForItem();
关键改进说明
- 用
shoppingList数组存储商品对象,每个对象包含name和price属性,确保商品与价格始终关联 - 遍历数组时直接比较对象的
price属性,同时可直接获取对应商品名称 - 增加了价格有效性校验,避免非数字或负数输入
期望运行效果示例
请输入商品名称(输入"结束"停止添加):苹果
请输入苹果的价格:5
请输入商品名称(输入"结束"停止添加):香蕉
请输入香蕉的价格:3
请输入商品名称(输入"结束"停止添加):榴莲
请输入榴莲的价格:30
请输入商品名称(输入"结束"停止添加):结束购物清单统计:
价格最高的商品:榴莲,价格:30元
价格最低的商品:香蕉,价格:3元
内容的提问来源于stack exchange,提问作者Ksklo
相关产品推荐
相关产品推荐

