我目前正在学习JavaScript课程,在练习中我应该创建一个函数,当应用到一个数组时,该函数返回一个新的数组,该数组只包含少于10个字符的字符串。
经过几次尝试,我确信这将是第一次,但失败了。
function validUserNames(array) {
return array.filter(function(el) { el.length < 10 } );
}
有人能帮忙吗?
发布于 2021-01-05 03:57:38
这个很好用。
function validUserNames(array) {
return array.filter(function(el) { return el.length < 10 } );
}
console.log(validUserNames(['foo', 'bar', 'baz', 'foobarbazzz']));
只需在过滤器函数中添加一个返回即可。如果没有它,则返回undefined
。filter
要求您为它提供一个谓词函数,该函数是返回 true或false的函数。当它返回true时,它包含在结果中,当返回false时,则不包含它。undefined
似乎导致它不包括在内。
您可以使用更简洁的语法,通过使用箭头函数来避免返回的需要,而不用大括号。
即
return array.filter(el => el.length < 10);
当您添加回大括号(假设您的函数跨越多行)时,返回语句需要包括在内。
即
return array.filter(el => { return el.length < 10 });
发布于 2021-01-05 03:58:09
问题是,filter
期望一个函数返回一个真实或虚假的值。您目前不从提供的函数返回任何内容,这意味着返回值总是undefined
(falsy)。这将导致过滤后的空数组。
应该在传递给filter
的提供函数中添加一个filter
语句。
function validUserNames(array) {
return array.filter(function(el) { return el.length < 10 } );
}
或者使用没有括号的箭头函数 ({
和}
)隐式返回:
function validUserNames(array) {
return array.filter(el => el.length < 10);
}
https://stackoverflow.com/questions/65578235
复制相似问题