当我在下面运行此代码时,结果将为["ai", "ai"]
。我正在尝试创建一个将返回["airport", "airplane"]
的函数。什么是最好的方法呢?
var gill = ['airplane', 'airport', 'apple', 'ball']
function auto(word, array) {
var geo = array.join(" ")
var snoop = new RegExp(word, "gi")
var gip = geo.match(snoop)
console.log(gip)
}
auto("ai", gill)
答案 0 :(得分:4)
var snoop = new RegExp("\\b\\S*" + word + "\\S*", "gi");
似乎可以胜任这项工作。它使用单词边界检查(\b
)。
然而,ECMAScript 5.1中有更好的选择,例如使用filter
:
var gill = [
"airplane",
"airport",
"apple",
"ball"
];
function auto(array, word){
return array.filter(function(a){
return new RegExp(word, "gi").test(a);
});
}
console.log(auto(gill, "ai"));