You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 23:39:15