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

如何根据搜索字符串从对象数组中匹配目标对象

我来帮你搞定这个从对象数组里查找匹配搜索字符串的问题,针对你给出的objArray,这里有几种实用的实现方式:

基础实现:查找所有属性值包含搜索字符串的对象

如果需要检查对象的所有属性值,判断是否包含目标搜索字符串,可以用数组的filter()方法,搭配Object.values()和some()来实现:

var objArray = [ 
  { id: 0, name: 'Object 0', otherProp: '321', secondVal:'stack' }, 
  { id: 1, name: 'O1', otherProp: 'Object 0', secondVal: 'Overflow' }, 
  { id: 2, name: 'Another Object', otherProp: '850', secondVal: 'Context' }, 
  { id: 3, name: 'Almost There', otherProp: '046', secondVal: 'Object 1' }, 
  { id: 4, name: 'Last Obj', otherProp: '78', secondVal: 'test' } 
];

// 定义要搜索的字符串
const searchStr = 'Object 0';

// 过滤出符合条件的对象
const matchedObjects = objArray.filter(obj => {
  // 获取当前对象的所有属性值,检查是否有任意一个值包含搜索字符串
  return Object.values(obj).some(value => {
    // 默认是区分大小写的匹配哦
    return String(value).includes(searchStr);
  });
});

console.log(matchedObjects);

运行这段代码后,会返回id为0和1的两个对象——因为它们分别在name和otherProp属性里包含了'Object 0'。

扩展:大小写不敏感的匹配

如果需要忽略大小写进行匹配(比如搜索'object 0'也能找到结果),可以把搜索字符串和属性值统一转成小写(或大写)后再比较:

const matchedObjectsCaseInsensitive = objArray.filter(obj => {
  const lowerSearchStr = searchStr.toLowerCase();
  return Object.values(obj).some(value => {
    return String(value).toLowerCase().includes(lowerSearchStr);
  });
});
扩展:只匹配特定属性

如果你只想检查某个特定属性(比如只看name属性),代码可以更简洁:

// 只匹配name属性完全等于'Object 0'的对象
const matchedByName = objArray.filter(obj => obj.name === searchStr);

// 如果是要匹配name属性包含搜索字符串的对象,就用includes:
const matchedByNameIncludes = objArray.filter(obj => obj.name.includes(searchStr));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:04:49