我正在研究简单的js函数... GetShortMessages使用' .message'来获取一系列对象。属性并返回小于<的消息数组。 50个字符长。 在小提琴下面提供我的代码.. 基本上我正在尝试学习过滤器:
function filteredMessages(messages){
return messages.length < 50;
}
function getShortMessages(messages) {
// SOLUTION GOES HERE
var filtered = messages.filter(filteredMessages);
return filtered;
}
module.exports = getShortMessages
当我确认我收到以下错误时
验证&#34;基本:过滤&#34;:
ACTUAL EXPECTED
------ --------
"[]" != "[ 'Ea occaecat adipisicing anim voluptate mollit.', "
"" != " 'Incididunt mollit dolore commodo ipsum.', "
null != " 'Veniam irure non Lorem enim nostrud.', "
null != " 'Excepteur commodo nulla consequat nostrud mollit.', "
null != " 'Eiusmod enim sunt aliqua veniam mollit.', "
null != " 'Sunt nisi deserunt labore ut ipsum nostrud.', "
null != " 'Ad officia proident irure sit.', "
null != " 'Ex laborum eu elit irure velit anim commodo.', "
null != " 'Eu laboris adipisicing non ea.', "
null != " 'Adipisicing cillum officia et nostrud.', "
null != " 'Pariatur laboris officia eiusmod Lorem.', "
null != " 'Aliqua esse reprehenderit proident deserunt.', "
null != " 'Nulla commodo enim sint excepteur duis ea.', "
null != " 'Aliqua elit culpa consequat consectetur.', "
null != " 'Mollit dolore nostrud officia dolore.', "
null != " 'Amet laboris labore labore minim id.', "
null != " 'Mollit aute labore dolor nisi irure dolor.', "
null != " 'Laborum velit mollit anim cupidatat ad mollit.', "
null != " 'Sit do pariatur pariatur velit ipsum.', "
null != " 'Adipisicing proident minim minim minim.', "
null != " 'Labore quis sit ut sit id.', "
null != " 'Labore eu nisi deserunt ea occaecat consequat.', "
null != " 'Exercitation culpa nostrud incididunt aliquip.', "
null != " 'Eu sunt amet do ea sunt adipisicing nostrud.', "
null != " 'Incididunt magna id qui cillum do.' ]"
null != ""
# FAIL
答案 0 :(得分:2)
您的filteredMessages
函数需要接受一个参数,因为Array.filter
方法将回调应用于将该元素作为参数传递给提供的回调的每个元素。
function filteredMessages(message){
return message.length < 50;
}
您实际上不必为此编写任何单独的函数,而是可以使用匿名函数:
messages.filter(function(message){
return message.length < 50;
});
答案 1 :(得分:0)
您忘记接受message
属性:
function filteredMessages(){
return messages.length < 50;
}
将功能更改为
function filteredMessages(message){
return message.length < 50;
}
答案 2 :(得分:0)
我认为问题在于你有一个带有“message”属性的对象数组,而你没有一个字符串数组。这应该是你的解决方案。 在过滤器函数中,您必须检查传递的对象的消息属性
var messages = [];
messages.push({message: 'text 1'});
messages.push({message: 'text 2 is long, very long, more long than 50 chracters, you know '});
messages.push({message: 'text 3'});
function filteredMessages(obj){
return obj.message.length < 50;
}
function getShortMessages(messages) {
var filtered = messages.filter(filteredMessages);
return filtered;
}
var module = {};
module.exports = getShortMessages;
var filtered = module.exports(messages);
for(var i in filtered){
console.log(filtered[i].message);
}