2014-10-28 59 views
0

以JavaScript編寫的這些函數中哪一個更好,爲什麼?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

這取決於你如何縮進它,喲你可以以不同的形式寫入後者,並使用短變量,並且它變得更易讀IMO http://dpaste.com/2BBZV68 – elclanrs 2014-10-28 05:58:07

回答

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功能進行操作實際的消息對象,而不是隻是文本,但你得到的一般想法。