我希望从数组中获取<=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语句。
答案 0 :(得分:3)
无需正则表达式,试试这个:
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-loop和if语句,请尝试使用.filter()
和.match()
:
var arr = ["cat", "apple", "window", "dog"];
var AcceptedItems = arr.filter(function(item) {
return item.match(/^[a-z]{1,3}$/);
});
答案 1 :(得分:2)
我假设您想要返回甚至类似于&#39; 1abc&#39;因为它只有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' ]
测试here
答案 2 :(得分:1)
如果你想获得与数组匹配的项目,你需要迭代它。
无论如何,从ECMA-Script 5开始,您将按如下方式重构代码:
var results = arr.filter(function(item) { return item.lengh <= 3; });
或者在ECMA-Script 6及以上版本中:
var results = arr.filter(item => item.length <= 3);
就生产力而言,你会更快。
答案 3 :(得分:0)
你在使用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);
答案 4 :(得分:0)
很多方法可以给这只猫上皮,我喜欢:
var arr = ["cat", "apple", "window", "dog"];
var upToThreeLetters = function(word) {
return word.length <= 3;
}
var filteredArr = arr.filter(upToThreeLetters);