用JavaScript编写的这些函数中哪一个更好?为什么?
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
使用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.
基本上我理解这种方法,看起来更复杂和混淆。也许更抽象。我也不喜欢语法“})。map(”。我认为这很笨重。
答案 0 :(得分:0)
为什么要结合实际的消息提取逻辑,测试逻辑以查看消息是否短缺以及将短消息检索到一个函数的逻辑?如果是我,我可能会写三个这样的函数
function isShortMessage(messageText) {
return messageText && messageText.length < 50;
}
function extractMessageText(message) {
return message && message.message;
}
function getShortMessages(messages) {
return messages.map(extractMessageText).filter(isShortMessage);
}
当然,如果你想要返回message
个对象,你可以修改你的isShortMessage
函数来操作实际的消息对象,而不仅仅是文本,但你会得到一般的想法。