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(第一个元素的索引,因为它在比较 b 到 ab[= 时找到了部分匹配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
我有这个 javascript 功能:
var y;
y = ['ab', 'f', 'c'].indexOf('b')
这个 returns -1 因为 b 不是 ab 的完全匹配 在 javascript 中,查找部分匹配的最简单方法是什么。
所以我想要:
y = ['ab', 'f', 'c'].indexOf('b')
到 return 0(第一个元素的索引,因为它在比较 b 到 ab[= 时找到了部分匹配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