Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在js中筛选小于<;50个字符长_Javascript_Jquery_Arrays_Dom Events - Fatal编程技术网

Javascript 在js中筛选小于<;50个字符长

Javascript 在js中筛选小于<;50个字符长,javascript,jquery,arrays,dom-events,Javascript,Jquery,Arrays,Dom Events,我正在做简单的js函数。。。 GetShortMessages获取具有“.message”属性的对象数组,并返回长度小于50个字符的消息数组。 在下面的小提琴中提供我的代码。。 基本上,我正在尝试学习一种过滤器: function filteredMessages(messages){ return messages.length < 50; } function getShortMessages(messages) { // SOLUTION GOES HERE

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


您忘记接受
消息
属性:

function filteredMessages(){
    return messages.length < 50;
}
函数filteredMessages(){
返回消息。长度<50;
}
将功能更改为

function filteredMessages(message){
    return message.length < 50;
}
函数filteredMessages(消息){
返回消息长度<50;
}

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

function filteredMessages(message){
    return message.length < 50;
}
函数filteredMessages(消息){
返回消息长度<50;
}
实际上,您不必为此编写任何单独的函数,可以使用匿名函数:

messages.filter(function(message){
   return message.length < 50;
});
messages.filter(函数(消息){
返回消息长度<50;
});

我认为问题在于您有一个具有“message”属性的对象数组,而没有字符串数组。这应该是你的解决方案。 在filter函数中,必须检查传递对象的message属性

var消息=[];
messages.push({message:'text 1'});
推送({message:'text2很长,很长,超过50个字符,你知道'});
messages.push({message:'text 3'});
函数筛选器消息(obj){
返回obj.message.length<50;
}
函数getShortMessages(消息){
var filtered=messages.filter(filteredMessages);
返回过滤;
}
var模块={};
module.exports=getShortMessages;
var filtered=module.exports(消息);
for(过滤后的变量i){
console.log(过滤后的[i].message);

}
感谢您的回复…当我运行程序时,我得到的是空数组,但当我验证它失败时…更新dmy代码并出错…我不确定您如何调用它,但它工作正常。打开控制台并运行更新后的JSFIDLE:感谢您的回复…我想我正在使用一个额外的函数…是否可以在不创建额外函数的情况下实现*不要使用任何for/while循环或数组#forEach.*不要创建任何不必要的函数,例如helpers.M:是否可以单独使用此函数实现函数getShortMessages(messages){//解决方案转到这里var filtered=messages.filter(filteredMessages);return filtered;}@谢谢你的回复…当我运行程序时,我得到了空数组,但当我验证它失败时…更新dmy代码和错误。。。
messages.filter(function(message){
   return message.length < 50;
});