在this thread的帮助下我得到了以下代码,它查找所有出现的至少 3 个字母的单词:
arr = ["ab", "abcdef", "ab test"]
var AcceptedItems = arr.filter(function(item) {
return item.match(/[a-zA-Z]{3,}/);
});
就我而言,应该是 abcdef
和 test
。
但它不仅仅获取了出现的次数,还获取了数组的整个条目。因此,我得到的不仅仅是 test
,而是 ab test
。
如何才能只获取匹配项(test
),而不是整个数组条目。
最佳答案
如果
.filter
会保留一个与您传递的谓词匹配的元素,但您需要根据该谓词是否为 true 来保存一个新值。您可以通过首先执行 map
然后执行 filter
来完成此操作,但我宁愿在一个循环中执行此操作。
var AcceptedItems = [];
for (var i = 0, len = arr.length; i < len; i++) {
var match = arr[i].match(/[a-zA-Z]{3,}/);
if (match) {
AcceptedItems.push(match[0]);
}
}
关于javascript - 仅获取匹配项,而不是整个条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35470013/