正则表达式和数组:最有效的方法

Regex and Array: Most efficient approach

本文关键字:有效 方法 数组 正则表达式      更新时间:2023-09-26

我想从数组中获取所有带有<=3字母的单词。

迭代数组并检查每个条目是否是一种有效的方法?

arr = ["cat", "apple", "window", "dog"];
for(i=0; i<arr.length; i++){
    if(arr[i].match(/^[a-z]{3}$/)){
        console.log(arr[i])
    }
}
//returns: "cat" and "dog"

或者是否已经有一个内置函数可以为我完成这项工作,所以我不必显式定义 for 循环和 if 语句。

不需要正则表达式,试试这个:

var arr = ["cat", "apple", "window", "dog"];
var len = arr.length;
for(len; len<=0; len--){
    if(arr[len].length <= 3){
        console.log(arr[len]);
    }
}

编辑:如果您不想显式定义 for 循环和 if 语句,请尝试使用 .filter().match()

var arr = ["cat", "apple", "window", "dog"];
var AcceptedItems = arr.filter(function(item) {
    return item.match(/^[a-z]{1,3}$/);
});

我假设你想返回甚至像"1abc"这样的单词,因为它只有 3 个字母。

下面将使用数组filter函数。

arr = ["cat", "apple", "window", "dog", "1acb", "1abcd"];
function getLessThanThree(anArray){
    return anArray.filter(function(v){
        return !( /[a-zA-Z]{3}./.exec(v) );
    })
}
console.log(getLessThanThree(arr)); // logs [ 'cat', 'dog', '1acb' ]

在这里测试

如果你想获得与数组中的东西匹配的项目,你需要迭代它。

无论如何,从 ECMA-Script 5 开始,您将按如下方式重构代码:

var results = arr.filter(function(item) { return item.lengh <= 3; });

或在 ECMA 脚本 6 及更高版本中:

var results = arr.filter(item => item.length <= 3);

在生产力方面,你会更快

你在JavaScript中。它已经可以做到这一点,不需要正则表达式。

var arr = ["cat", "apple", "window", "dog"];
var filtered = arr.filter(function(e) { return e.length <= 3; });

做。使用 ES6 获得更简单的语法:

var filtered = arr.filter(e => e.length <= 3);

有很多方法可以给这只猫剥皮,我喜欢:

var arr = ["cat", "apple", "window", "dog"];
var upToThreeLetters = function(word) {
  return word.length <= 3;
}
var filteredArr = arr.filter(upToThreeLetters);