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

如何在JS数组中筛选指定字段行?实现指定字段搜索功能

如何仅针对指定字段实现JavaScript数组搜索功能?

一、修改现有代码实现需求

你只需要把原来遍历所有属性的逻辑,改成仅检查name和day两个字段即可,不用再通过Object.values(entry)遍历所有属性值。修改后的代码如下:

const data = [
 {
  name: 'name',
  day: 'monday',
  year: '2023',
  user:'user13421'
 },
 {
  name: 'name1',
  day: 'monday1',
  year: '20231',
  user:'user134211'
 }
]

let filtered;
const onSearchF = (keyword) => {
  const lowerKeyword = keyword.toLowerCase(); // 提前转小写,避免重复执行转换
  filtered = data.filter((entry) => {
    // 仅判断name和day字段是否匹配关键词
    return entry.name.toLowerCase().includes(lowerKeyword) || 
           entry.day.toLowerCase().includes(lowerKeyword);
  });
};

二、更优方案(可扩展+性能优化)

如果后续可能需要调整搜索字段,或者想让代码更灵活易维护,可以把要搜索的字段做成配置数组,同时处理空关键词的边界情况,优化重复的字符串转换操作:

const data = [
 {
  name: 'name',
  day: 'monday',
  year: '2023',
  user:'user13421'
 },
 {
  name: 'name1',
  day: 'monday1',
  year: '20231',
  user:'user134211'
 }
]

// 配置要搜索的字段,后续修改直接改这个数组即可
const SEARCH_TARGET_FIELDS = ['name', 'day'];
let filtered;

const onSearchF = (keyword) => {
  // 关键词为空时返回全部数据,提升用户体验
  if (!keyword.trim()) {
    filtered = [...data];
    return;
  }
  const lowerKeyword = keyword.toLowerCase();
  filtered = data.filter(entry => {
    // 遍历配置的字段,判断是否有匹配项
    return SEARCH_TARGET_FIELDS.some(field => {
      return entry[field].toLowerCase().includes(lowerKeyword);
    });
  });
};

这个方案的优势:

  • 扩展性强:新增/移除搜索字段只需修改SEARCH_TARGET_FIELDS数组,无需改动过滤逻辑
  • 性能更优:仅对关键词做一次小写转换,避免循环内重复执行字符串转换操作
  • 边界处理完善:考虑了关键词为空的情况,返回全部数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 18:30:09