Java菜单页:对象数组按名称搜索及循环菜单实现求助
解决方案:对象数组搜索与菜单循环实现
一、对象数组按名称字段搜索
直接利用数组的filter()方法,遍历数组时仅匹配对象的名称字段即可(假设对象中名称字段为name,可根据实际字段名替换)。
模糊匹配(支持关键词包含)
// 示例对象数组 const itemList = [ { name: "笔记本", type: "电子" }, { name: "签字笔", type: "文具" }, { name: "笔记本电脑", type: "电子" } ]; function searchByName(keyword) { // 忽略大小写的模糊匹配 return itemList.filter(item => item.name.toLowerCase().includes(keyword.toLowerCase())); } // 使用示例 const result = searchByName("笔记"); console.log(result); // 输出 [{name: "笔记本", type: "电子"}, {name: "笔记本电脑", type: "电子"}]
精确匹配
如果需要严格匹配名称,将includes替换为全等判断即可:
return itemList.filter(item => item.name === keyword);
二、循环返回主菜单并保留数组内容
核心是把数组定义在循环外部(避免每次循环重置数组),用while循环控制菜单流程,操作完成后自动回到菜单选择界面,直到用户触发退出。
控制台交互示例
// 数组定义在循环外,确保新增内容永久保留 let itemList = []; while (true) { // 打印主菜单 console.log("\n=== 操作菜单 ==="); console.log("1. 添加新对象"); console.log("2. 输出全部数组"); console.log("3. 按名称搜索"); console.log("4. 退出程序"); // 获取用户选择(Node.js环境可改用readline模块,浏览器用prompt) const choice = prompt("请输入操作序号:"); switch (choice) { case "1": const name = prompt("请输入名称:"); const type = prompt("请输入类型:"); itemList.push({ name, type }); alert("添加成功"); break; case "2": console.log("当前数组内容:", itemList); alert(JSON.stringify(itemList, null, 2)); break; case "3": const keyword = prompt("请输入搜索关键词:"); const searchResult = itemList.filter(item => item.name.toLowerCase().includes(keyword.toLowerCase())); console.log("搜索结果:", searchResult); alert(JSON.stringify(searchResult, null, 2)); break; case "4": alert("程序已退出"); return; default: alert("输入无效,请重新选择"); } }
浏览器DOM交互逻辑
如果是页面端,只需将prompt/alert替换为DOM元素的输入框和弹窗,核心逻辑不变:数组保存在全局作用域,通过循环+条件判断控制菜单切换,操作后回到主菜单界面。
内容的提问来源于stack exchange,提问作者Jade P.
相关产品推荐
相关产品推荐

