2017-10-06 6 views
0

Der folgende Code examines the content of inputData.body for a 32-character string match entspricht, und - zu meinem besten Verständnis - stellt alle Spiele in einem Array.Javascript zurückzukehren „false“, wenn keine regex

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

Ich brauche jetzt den Code etwas im Fall von nicht angepassten Ausdrücke zurückzukehren, zum Beispiel. die Zeichenfolge "false".

war ich diese zusätzlich zu bekommen nicht in der Lage zu arbeiten ...

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

Wie soll ich mich über etwas im Fall der Leere bedingt Rückkehr?

+0

Ist der Code in Funktion? –

+2

Ich denke, dein Code sollte funktionieren. – Barmar

+0

Sind Sie sicher, dass der Aufrufer bereit ist, eine Zeichenfolge als Ergebnis der Funktion zu erhalten? Wahrscheinlich erwartet es ein Array. – Barmar

Antwort

0

Der Anrufer erwartet ein Array von Gegenständen, oder ein einzelnes Objekt (vermutlich wie ein Array von diesem einem Objekt behandelt). Also gib ein einzelnes Objekt zurück.

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

oder in einer einzigen Anweisung:

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

alle oben Kenntnis nehmend ich. Ich brauche etwas affirmative Ausgabe, anstatt etwas leer zu füllen. Wo Sie 'str' mit' false' füllen, scheint das zu tun und gibt mir die Möglichkeit, in einem nächsten Schritt nach dem Wort 'false' zu ​​suchen nicht schön, aber was ich brauche, ich stelle mir vor, ich muss das allerdings konditionieren ..? 'if (Übereinstimmungen == null) { return {str: 'false'}; } else { return matches.map (function (m) {return {str: m}}) } '? –

+0

Sie brauchen "else" nicht, wenn das 'if' eine' return' ausführt. – Barmar

+1

Ich schaute in der Dokumentation, und es scheint zu sagen, dass leere Arrays in Ordnung sind. ** Wenn-Code durch Zapier der Auslöser des Zap ist und ein leeres Array zurückgegeben wird, passiert nichts ** – Barmar

0

Der Anrufer erwartet wahrscheinlich eine Anordnung, die ein leerer keine Spiele waren, wenn es sein sollte. Sie brauchen nicht die if Aussage, gerade dies zu tun:

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