【问题标题】:Filter in js that are less than < 50 characters long过滤长度小于 < 50 个字符的 js
【发布时间】:2014-09-25 21:11:47
【问题描述】:

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

当我验证我收到以下错误时

验证“基本:过滤器”:

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

【问题讨论】:

    标签: javascript jquery arrays dom-events


    【解决方案1】:

    您的filteredMessages 函数需要接受一个参数,因为Array.filter 方法对每个元素应用一个回调,将该元素作为参数传递给提供的回调。

    function filteredMessages(message){
        return message.length < 50;
    }
    

    您实际上不必为此编写任何单独的函数,而是可以使用匿名函数:

    messages.filter(function(message){
       return message.length < 50;
    });
    

    【讨论】:

    • 感谢您的回复...当我运行程序时我得到空数组但是当我验证它失败...更新 dmy 代码和错误...
    • 我不确定你是怎么称呼它的,但它工作正常。打开控制台并运行这个更新的 jsfiddle:jsfiddle.net/5kf36sbd/2
    • 感谢您的回复...我想我正在使用附加功能...是否可以在不创建附加功能的情况下实现 * 不要使用任何 for/while 循环或 Array#forEach。 * 不要创建任何不必要的功能,例如帮手。
    • M: 是否可以单独使用这个函数来实现 function getShortMessages(messages) { // 解决方案在这里 var filters = messages.filter(filteredMessages);返回过滤; }
    【解决方案2】:

    您忘记接受message 属性:

    function filteredMessages(){
        return messages.length < 50;
    }
    

    将函数改为

    function filteredMessages(message){
        return message.length < 50;
    }
    

    【讨论】:

    • @mrthyl:感谢您的回复...当我运行程序时我得到空数组但是当我验证它失败...更新 dmy 代码和错误...
    【解决方案3】:

    我认为问题在于您有一个具有“消息”属性的对象数组,而您没有字符串数组。这应该是您的解决方案。 在过滤器功能中,您必须检查传递对象的消息属性

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-19
      • 1970-01-01
      • 2016-07-22
      • 1970-01-01
      • 2020-05-03
      • 1970-01-01
      • 2021-06-06
      • 1970-01-01
      相关资源
      最近更新 更多