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

如何在JavaScript对象中实现类LIKE运算符的字符串搜索?

在JavaScript对象中实现类似LIKE的字符串搜索

嘿,我懂你的需求啦——想在JavaScript对象里筛选出值包含指定字符串的键值对对吧?先给你指出代码里的小问题:普通JavaScript对象并没有filter()方法,这个方法是数组的专属方法,直接调用会抛出错误哦~

下面给你一个完整的解决方案,步骤超简单:

  1. 把对象转成键值对数组:用Object.entries()方法,它会将对象转换为[[键, 值], [键, 值], ...]格式的数组,这样就能用数组的filter()方法了。
  2. 筛选匹配的项:对转换后的数组调用filter(),检查每个值是否包含目标搜索字符串。
  3. (可选)转回对象:如果需要把筛选结果变回对象格式,用Object.fromEntries()方法就行。

完整代码示例

let obj = {
  320936614713847: "Nibaru",
  612610972204514: "Slevníme",
  633965056629062: "Eye of wisdom"
};

// 获取搜索框的输入值(这里做了不区分大小写处理,可选)
const searchInput = document.getElementById('pageSearchBox').value.toLowerCase();

// 筛选出值包含搜索字符串的键值对
const matchedPairs = Object.entries(obj).filter(([key, value]) => {
  // 把值也转成小写,保证搜索不区分大小写
  return value.toLowerCase().includes(searchInput);
});

// 将筛选后的键值对数组转回对象
const matches = Object.fromEntries(matchedPairs);

console.log(matches);

额外小技巧

  • 如果不需要区分大小写的搜索,直接去掉代码中的.toLowerCase()即可。
  • 要是你只需要获取匹配的键或者值,可以在筛选后用map()提取:
    // 只获取匹配的键
    const matchedKeys = matchedPairs.map(([key]) => key);
    // 只获取匹配的值
    const matchedValues = matchedPairs.map(([_, value]) => value);
    

内容的提问来源于stack exchange,提问作者Daniel Programátor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:28:57