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

JS section list格式嵌套对象数组搜索功能实现疑问

原有代码问题点
  • 包含判断逻辑倒置:原代码写的是query.includes(c.description),是判断搜索关键词中是否包含完整的条目描述,和需求完全相反,应该判断条目描述是否包含搜索关键词。
  • 筛选逻辑不符合要求:使用every要求当前分组下所有条目都满足条件才保留分组,且没有对分组内的条目做过滤,会返回分组内所有不匹配的内容。
修正实现代码
const sectionList = [
  {
    caption: 'caption1',
    data: [
      { id: '1', title: 'Payment', description: 'Pay info' },
      { id: '2', title: 'Refund', description: 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Dicta et ipsam voluptate commodi nulla asperiores corporis, sapiente quasi obcaecati quae totam consequatur cum, perspiciatis pariatur !' },
      { id: '3', title: 'Mobs', description: 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Dicta et ipsam voluptate commodi nulla asperiores corpori!' },
      { id: '4', title: 'test', description: 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Dicta et ipsam voluptate commodi nulla' },
    ],
  },
  {
    caption: 'caption2',
    data: [
      { id: '5', title: 'Lorem ipsum, dolor sit amet consectetur adipisicing elit. Recusandae eveniet?', description: 'Custom desc' },
    ],
  },
];

const query = 'Lorem ipsum'
// 可选:转小写实现大小写不敏感搜索
const normalizedQuery = query.toLowerCase()

const res = sectionList.reduce((result, currentSection) => {
  // 过滤当前分组下匹配的条目
  const matchedItems = currentSection.data.filter(item => {
    // 如需同时匹配标题可放开下方注释
    // return item.title.toLowerCase().includes(normalizedQuery) || item.description.toLowerCase().includes(normalizedQuery)
    return item.description.toLowerCase().includes(normalizedQuery)
  })
  // 仅当分组下存在匹配条目时,才保留该分组
  if (matchedItems.length) {
    result.push({
      ...currentSection,
      data: matchedItems
    })
  }
  return result
}, [])

console.log(res)
逻辑说明
  • 遍历所有分组,逐个对分组内的条目做过滤,只保留描述包含搜索关键词的条目
  • 过滤后如果当前分组没有匹配的条目,直接丢弃该分组
  • 保留的分组会替换原data字段为匹配后的条目列表,最终返回的结构和原结构保持一致,完全符合预期输出要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:51:01