【问题标题】:How to match a pattern against an array in JavaScript?如何将模式与 JavaScript 中的数组进行匹配?
【发布时间】:2015-08-20 10:20:58
【问题描述】:

我们在 jQuery 中有 $.inArray(searchString, array) 函数,但这将在数组中存在的值中查找字符串的完全匹配。但是如何检查数组中的字符串,如indexOf

例如,让我们获取字符串“mark_zuck”,如果数组看起来像这样,["mark", "sheryl", "zuck"]。我们可以通过使用循环将数组中的每个值与给定字符串进行比较来做到这一点,例如,

for (i=0; i<array.length; i++) {
    searchString.indexOf(array[i]);
}

我正在寻找一种更好的方法来实现这一点。请帮忙。

【问题讨论】:

  • @Archer “解析数组”是什么意思?
  • 我删除了我的 cmets,因为事实证明我错了! atinder 发布了一个几乎正确的解决方案。

标签: javascript arrays regex search


【解决方案1】:
array.filter(function(a){
  return searchString.indexOf(a) !== -1;
}

【讨论】:

  • 应该是return searchString.indexOf(a) !== -1;
  • @Archer @atinder 嘿,你能看看小提琴吗,jsfiddle.net/udhayakumar/3v3288s6。因为它返回的是 ["sheryl", "zuck"] 而不是 ["mark", "zuck"]。我做错了吗?
  • 是的,您在最后强调了需要!== -1 的原因。 atinder 更新了答案以包含它,所以现在试试他上面的内容。
  • @Archer 哎呀,我没注意到。对不起,谢谢:)
【解决方案2】:

你也可以使用array.some

var monthNames = ["mark", "sheryl", "zuck"];
var chk = 'mark_zuck';

var test = monthNames.some(function(e) {    
   return chk.indexOf(e);
});
console.log(test);

小提琴:http://jsfiddle.net/haqk2snr/

【讨论】:

    猜你喜欢
    • 2015-06-10
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 2021-04-08
    • 2013-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多