如何在JavaScript对象中实现类LIKE运算符的字符串搜索?
在JavaScript对象中实现类似LIKE的字符串搜索
嘿,我懂你的需求啦——想在JavaScript对象里筛选出值包含指定字符串的键值对对吧?先给你指出代码里的小问题:普通JavaScript对象并没有filter()方法,这个方法是数组的专属方法,直接调用会抛出错误哦~
下面给你一个完整的解决方案,步骤超简单:
- 把对象转成键值对数组:用
Object.entries()方法,它会将对象转换为[[键, 值], [键, 值], ...]格式的数组,这样就能用数组的filter()方法了。 - 筛选匹配的项:对转换后的数组调用
filter(),检查每个值是否包含目标搜索字符串。 - (可选)转回对象:如果需要把筛选结果变回对象格式,用
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
相关产品推荐
相关产品推荐

