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

如何在二级嵌套JSON数组中搜索值,返回两层均符合匹配条件的结果

实现代码修改

1. 初始化原始数据备份

先保留完整的原始数据,避免过滤操作丢失源数据:

// 原始完整数据备份,不要修改这个变量
orgList = [
  {
    id: 'abc',
    data: [
      { key: '1', value: 'car' },
      { key: '2', value: 'bus' },
      { key: '3', value: 'bike' },
      { key: '4', value: 'truck' },
      { key: '5', value: 'jeep' },
    ],
  },
  {
    id: 'def',
    data: [
      { key: '1', value: 'car' },
      { key: '2', value: 'bicycle' },
      { key: '3', value: 'train' },
      { key: '4', value: 'aeroplane' },
      { key: '5', value: 'jeep' },
    ],
  },
];
// 页面渲染绑定的数组,初始值为完整原始数据
list = JSON.parse(JSON.stringify(this.orgList));

2. 改写搜索处理方法

遍历所有外层对象,分别过滤内层数组,再剔除无匹配结果的外层项:

handleSearch = (event) => {
  const searchVal = event.target.value.trim().toLowerCase();
  if (searchVal) {
    this.list = this.orgList
      // 遍历所有外层对象,过滤对应内层data数组
      .map(outer => ({
        ...outer,
        data: outer.data.filter(inner => inner.value.toLowerCase().includes(searchVal))
      }))
      // 剔除内层无匹配结果的外层对象
      .filter(outer => outer.data.length);
  } else {
    // 搜索为空时恢复全量数据
    this.list = JSON.parse(JSON.stringify(this.orgList));
  }
};

逻辑说明

  • 原代码仅处理了下标为0的第一个外层对象,修改后通过map遍历全量外层对象
  • 每次搜索都基于备份的原始数据orgList处理,不会因为多次搜索丢失源数据
  • 最后通过filter移除内层无匹配项的外层对象,完全符合给定的输出示例

内容的提问来源于stack exchange,提问作者Vishnu Shenoy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 08:15:03