我正在尝试重新创建一个简单的JavaScript for循环以在Zapier中运行。
我的Javascript技能可能会使我成为“经验丰富但仍然很新奇”的人,因此将其转换为Zapier使其能够正常运行已证明相当困难。我的代码将按预期运行,直到尝试使用Zapier的要求对其进行重写。
对于下面的示例,我在“ input”中将inputData替换为伪文本。
这是我在JS中工作模型的示例:
const input = "Company Name: Shire Homes, Inc. | First Name: Frodo
| Last Name: Baggins |"
const fout = input.match(/\: (.*?) \|/g)
for (let i = 0; i < fout.length; i++) {
console.log(fout[i].slice(2, -2))
}
哪个日志:
Shire Homes,Inc. 佛罗多 巴金斯
由于Zapier要求返回数据,而不是针对正则表达式遍历每个字符串,因此我仅获得第一个字符串,然后停止。如何将其重写以在Zapier中正常运行?
我需要将每个迭代作为字符串值返回,因为我将在其他位置插入数据。
谢谢!
答案 0 :(得分:0)
好问题!
您不仅要遍历匹配项,还希望对每个匹配项进行处理并获得结果。最好的方法是使用.map
函数(docs)。
就像您提到的那样,您需要从整个函数中返回一些内容。有一些选项,您要根据最终Zap的功能进行选择。
"Shire Homes, Inc.,Frodo,Baggins"
)以一次使用所有字符串,则需要将其连接起来。 所以让我们看一下代码!
// this is handled by Zapier already, but we need the variable to test it
const inputData = {text: "Company Name: Shire Homes, Inc. | First Name: Frodo | Last Name: Baggins |"}
const rawSegments = inputData.text.match(/\: (.*?) \|/g)
const segments = rawSegments.map(s => s.slice(2, -2))
// probably want to return an object
// option 1
// return {result: segments.join('')}
// option 2; probably don't want this
// return segments
// option 3; probably the best, but depends on the data being in the same order every time
return {
company: segments[0],
fname: segments[1],
lname: segments[2]
}
那里有一些JS速记,但希望可以清楚发生了什么。