JavaScript风格&;笨重的语法&;设计
这些用JavaScript编写的函数中,哪一个更好?为什么JavaScript风格&;笨重的语法&;设计,javascript,function,map,filter,functional-programming,Javascript,Function,Map,Filter,Functional Programming,这些用JavaScript编写的函数中,哪一个更好?为什么 function getShortMessages(messages) { var filtered_messages = messages.filter(function(message) { if (message.message.length < 50){ return message.message; } }); var short_messages = filtered_messages
function getShortMessages(messages) {
var filtered_messages = messages.filter(function(message) {
if (message.message.length < 50){
return message.message;
}
});
var short_messages = filtered_messages.map(function(message){
return message.message;
});
return short_messages;
}
//My solution
函数getShortMessages(消息){
var filtered_messages=messages.filter(函数(消息){
如果(message.message.length<50){
返回消息.message;
}
});
var short_messages=筛选的_messages.map(函数(消息){
返回消息.message;
});
返回短消息;
}
//我的解决方案
在JavaScript中使用Array.prototype.filter()方法迭代数组,只保留少于50个字符的消息。消息是对象,您可以对消息项调用.message。我认为我的代码有副作用,不是很枯燥
function getShortMessages(messages) {
return messages.filter(function(item) {
return item.message.length < 50 }).map(function(item) {
return item.message;
});
}
// This is the other solution.
函数getShortMessages(消息){
返回消息。筛选器(函数(项){
return item.message.length<50}).map(函数(项){
返回item.message;
});
}
//这是另一个解决方案。
基本上我理解这个方法,它看起来更复杂和模糊。也许更抽象一些。我也不喜欢语法“}).map(“.”,因为我认为这很笨拙。为什么要将实际的消息提取逻辑、测试逻辑(查看消息是否短)和检索短消息的逻辑耦合到一个函数中?如果是我,我可能会编写三个这样的函数
function isShortMessage(messageText) {
return messageText && messageText.length < 50;
}
function extractMessageText(message) {
return message && message.message;
}
function getShortMessages(messages) {
return messages.map(extractMessageText).filter(isShortMessage);
}
函数isShortMessage(messageText){
返回messageText&&messageText.length<50;
}
函数extractMessageText(消息){
返回消息&&message.message;
}
函数getShortMessages(消息){
returnmessages.map(extractMessageText).filter(isShortMessage);
}
当然,如果您希望返回
消息
对象,可以修改isShortMessage
函数以操作实际的消息对象,而不仅仅是文本,但您得到了一般的想法。这取决于您缩进的方式,您可以以不同的形式编写后面的对象,并使用短变量,它会变得更简单国际海事组织