我是javascript的新手,我正在编写一个编码挑战,要求你构建一个函数,该函数将一个字符串数组作为参数,并返回包含四个字母或字符的所有字符串。我的函数将返回它找到的第一个四字符项,但随后停止并且不再返回任何四个字符的项。代码如下:
function isFourLetters(arr) {
for (i=0; i < arr.length; i++) {
if (arr[i].length===4) {
return arr[i];
}
}
}
我盯着这个看了10分钟左右,试图看看为什么for-loop一旦到达一个有四个字符的数组元素就停止了,无论出于什么原因我都看不到它,这让我觉得有一些关于for-loops我显然不明白。任何帮助将不胜感激!
答案 0 :(得分:0)
你可以声明一个“tmpArr”并在循环找到时添加4个字母的字符串。然后在函数末尾返回“tmpArr”。
答案 1 :(得分:0)
您的函数返回第一个匹配项(带有4个字母的字符串)。
您需要将这些匹配存储到数组中
function isFourLetters(arr) {
for (i=0; i < arr.length; i++) {
if (arr[i].length===4) {
return arr[i]; // <--- Here your problem
}
}
}
另一种方法是将匹配推送到数组中:
function isFourLetters(arr) {
var matcher = [];
for (i=0; i < arr.length; i++) {
if (arr[i].length===4) {
matches.push(arr[i]);
}
}
return matches;
}
或者更好的是,请查看功能 filter
:
function isFourLetters(arr) {
return arr.filter(function(str) {
return str.length === 4;
});
}
答案 2 :(得分:0)
问题在于,当您输入if条件时,您会返回。返回打破了函数范围并仅返回arr [i]。 您应该在函数内部创建一个新数组,然后使用if在返回的数组上添加元素。然后,当for循环结束时,您可以返回整个新数组。
答案 3 :(得分:0)
您可以在数组中使用过滤器方法。过滤器()方法创建一个新数组,其中包含所有通过所提供函数实现的测试的元素。
var arr = ['1234','spray', 'limit',test', 'elite', 'exuberant', 'destruction', 'present'];
const result = arr.filter(arrElement => arrElement.length === 4);
console.log(result);
//结果:[1234,测试]
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter