如果对象包含数组中的任何子字符串

2024-02-20

我有一系列这样的关键字:

var keywords = ['red', 'blue', 'green'];

还有一个像这样的对象:

var person = {
    name: 'John',
    quote: 'I love the color blue'
};

我如何确定 person 对象中的任何值是否包含任何关键字?

Update


function isSubstring(w){
  for(var k in person) if(person[k].indexOf(w)!=-1) return true;
  return false
}

keywords.some(isSubstring) // true if a value contains a keyword, else false

这区分大小写并且不考虑字边界。


第二个答案

这是一种情况——不敏感的, and does尊重单词边界。

var regex = new RegExp('\\b('+keywords.join('|')+')\\b','i');
function anyValueMatches( o, r ) {
  for( var k in o ) if( r.test(o[k]) ) return true;
  return false;
}

anyValueMatches(person,regex) // true if a value contains a keyword, else false

If any keywords包含在正则表达式中具有特殊含义的字符,它们必须被转义。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果对象包含数组中的任何子字符串 的相关文章

随机推荐