2016-02-17 23 views
0

隨着this thread幫助下,我得到了下面的一段代碼,其中發現的話所有出現至少3個字母:只獲得了比賽,而不是整體進入

arr = ["ab", "abcdef", "ab test"] 

var AcceptedItems = arr.filter(function(item) { 
    return item.match(/[a-zA-Z]{3,}/); 
}); 

在我的情況,應該是abcdeftest

但是,不僅僅是發生,它讓我的數組的整個條目。所以,而不是隻是test它得到我ab test

我怎樣才能得到匹配(test),而不是整個數組條目。

+1

'arr.map(item.match .... [0])。filter(Boolean)'' – georg

回答

1

.filter將保留一個元素,如果它匹配您傳遞的謂詞,但您需要基於謂詞是否爲真來保存新值。你可以通過首先執行map然後filter這樣做,但我寧願在一個循環中執行此操作。

var AcceptedItems = []; 
for (var i = 0, len = arr.length; i < len; i++) { 
    var match = arr[i].match(/[a-zA-Z]{3,}/); 
    if (match) { 
    AcceptedItems.push(match[0]); 
    } 
} 
相關問題