在js中过滤小于< 50个字符长

时间:2014-09-25 21:11:48

标签: jquery arrays javascript-events javascript

我正在研究简单的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

3 个答案:

答案 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);
}