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

如何通过检查字符串存在性用JavaScript返回匹配的对象数组

筛选对象数组中keys字段包含指定字符串的对象

需求:给定一个对象数组,筛选出其中keys字段包含指定字符串的对象,返回这些对象组成的新数组。

示例数组:

var arr = [
  {id:1, keys: "zapp"},
  {id:2, keys: "zapp, zoin"},
  {id:3, keys: "dell"}
];

你尝试的代码问题分析

你写的代码存在几个问题:

  • 变量名大小写不一致:定义的是splitkeys,后续调用却用splitKeys,会直接报错
  • 字符串分割方法调用错误:elem.keys(',')应为elem.keys.split(','),需调用split方法才能分割字符串
  • 逻辑冗余:无需单独判断是否包含逗号,所有情况可统一处理

优化后的解法

可以用数组的filter方法简化逻辑,同时处理keys字段中可能存在的空格,确保匹配准确:

function checkKeys(arr, keytocheck) {
  return arr.filter(elem => {
    // 按逗号分割字符串,去除每个元素前后空格后,检查是否包含目标字符串
    return elem.keys.split(',').map(key => key.trim()).includes(keytocheck);
  });
}

console.log(checkKeys(arr, "zapp"));

如果要避免部分匹配(比如目标是zapp,不想误匹配zappp),可以用正则表达式实现更严谨的匹配:

function checkKeys(arr, keytocheck) {
  // 构建正则规则,匹配独立的目标字符串,兼容逗号分隔和前后空格的情况
  const regex = new RegExp(`(^|,\\s*)${keytocheck}(\\s*,|$)`);
  return arr.filter(elem => regex.test(elem.keys));
}

console.log(checkKeys(arr, "zapp"));

期望输出

[
  {id:1, keys: "zapp"},
  {id:2, keys: "zapp, zoin"}
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 16:54:21