2014-09-25 52 views
0

我正在處理簡單的js函數... GetShortMessages接收具有'.message'屬性的對象數組,並返回小於<的字符數組50個字符長。 提供了以下我的代碼在小提琴.. 基本上我努力學習的過濾器:在js中過濾的長度小於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 

回答

0

你忘了接受message屬性:

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

更改功能

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

@mrthyl:感謝您的回覆......當我運行PROGRAME我得到空數組但是當我驗證它的失敗...更新dmy代碼和錯誤... – 2014-09-25 21:22:07

2

filteredMessages功能需求爲Array.filter方法適用回調來傳遞該元素作爲參數傳遞給提供的回調函數的每個元素,以接受參數。

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

你實際上並沒有寫這方面的任何獨立的功能和可以使用,而不是一個匿名函數:

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

感謝您的回覆...當我運行程序時,我得到空陣列,但是當我驗證它失敗時...更新dmy代碼和錯誤... – 2014-09-25 21:21:42

+0

我不知道你是如何調用這個,但它工作正常。打開控制檯並運行這個更新的jsfiddle:http://jsfiddle.net/5kf36sbd/2/ – 2014-09-25 22:15:24

+0

感謝您的回覆......我想我正在使用一個額外的功能......是否有可能實現而不創建額外的功能*不要使用for/while循環或Array#forEach。 *不要創建任何不必要的功能,例如助手。 – 2014-09-25 22:30:53

0

我覺得現在的問題是,你有對象與「數組消息「屬性,並且您沒有字符串數組。這應該是你的解決方案。 在過濾器功能,您必須檢查傳入對象的消息屬性

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

相關問題