javascript 中的部分字符串匹配

Partial string matching in javascript

我有这个 javascript 功能:

var y;
y = ['ab', 'f', 'c'].indexOf('b')

这个 returns -1 因为 b 不是 ab 的完全匹配 在 javascript 中,查找部分匹配的最简单方法是什么。

所以我想要:

y = ['ab', 'f', 'c'].indexOf('b')

到 return 0(第一个元素的索引,因为它在比较 bab[= 时找到了部分匹配13=]

我知道我无法使用 indexOf 来完成,最好的方法是什么?

你有多种方法,你可以使用方法Array.prototype.filter:

var testRegex = /b/;
var result = ['ab','f','c'].map(function(item, index) {
      return testRegex.test(item) ? index : null; //return index in the array if found.
}).filter(function(index) {
   return index !== null;  // filter the result and remove all results that are null;
});

结果应等于 [0];

如果您尝试使用这样的数组:

['ab', 'cgt', 'abcd', 'cd', 'efb'];

应该return:

[0, 2, 4]

您将必须遍历数组:

var arr = ['ab', 'f', 'c']

function find(a, c) {
  for(var i = 0; i < a.length; ++i) {
    if(a[i].indexOf(c) != -1)
      return i
  }
  
  return -1
}

// Example:
document.body.innerHTML = find(arr, "b")

使用 ES6 Array.prototype.findIndex 和箭头函数:

y = ['ab', 'f', 'c'];
y.findIndex(el => el.indexOf('b') > -1); //0