2017-10-06 102 views
0

以下代碼examines the content of inputData.body for a 32-character string match,並且 - 盡我所知,將任何匹配放在數組中。如果沒有正則表達式匹配,則返回「false」

// stores an array of any length (0 or more) with the matches 
var matches = inputData.body.match(/\b[\w-]{32}\b/g) 

// the .map function executes the nameless inner function once for each element of the array and returns a new array with the results 
return matches.map(function (m) { return {str: m} }) 

我現在需要的代碼中沒有匹配的表達式的情況下,例如返回東西。字符串"false"

我是不是能夠得到這個除了上班......

// stores an array of any length (0 or more) with the matches 
var matches = inputData.body.match(/\b[\w-]{32}\b/g) 

if (matches == null){ 
    return 'false' 
} 

// the .map function executes the nameless inner function once for each element of the array and returns a new array with the results 
return matches.map(function (m) { return {str: m} }) 

我應該如何去空虛的情況下,有條件地返回的東西嗎?

+0

被包裹在函數的代碼? –

+2

我認爲你的代碼應該可以工作。 – Barmar

+0

你確定調用者已經準備好獲得一個字符串作爲該函數的結果嗎?它可能期望一個數組。 – Barmar

回答

0

調用者需要一個對象數組或單個對象(可能被視爲一個對象的數組)。所以返回一個單一的對象。

if (matches == null) { 
    return { str: "false"; } 
} 
return matches.map(function (m) { return {str: m} }); 

或在單個語句:

return matches == null ? { str: "false"; } : matches.map(function (m) { return {str: m} }); 
+0

注意以上所有。需要一些肯定的輸出,而不是填充一個空的任何東西,在上面用'false'填充'str'的​​地方似乎是這樣做的,並且使我能夠在後續步驟中測試「false」這個詞。不漂亮,但我需要的。我想我需要這個條件,雖然..? 'if(matches == null){ return {str:'false'}; } else { return matches.map(function(m){return {str:m}}) }'? –

+0

如果'if'執行'return',則不需要'else'。 – Barmar

+1

我查看了文檔,它似乎說空數組是可以的。 **如果Zapier的Code是Zap的觸發器,並且返回一個空數組,則不會發生任何事情** – Barmar

0

調用者可能希望一個數組,這應該是如果沒有匹配的空單。你不需要if聲明,只是這樣做:

return (matches || []).map(function (m) { return {str: m} })