我正在尝试重新创建一个简单的javascript for循环,以便在Zapier中运行。
我的Javascript技能可能会让我成为“经验丰富但仍很新鲜”的人,因此要正确地在Zapier中发挥作用已经被证明是相当困难的。我的代码按预期操作,直到我尝试使用Zapier的要求重写它。
对于下面的示例,我在“输入”中用虚拟文本替换了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公司
因为Zapier要求返回数据,而不是在regex上迭代每个字符串,所以我只得到第一个字符串,然后它停止。在Zapier中,如何重写它才能正确地工作?
我需要将每个迭代作为字符串值返回,因为我要将数据插入到其他地方。
提前感谢!
发布于 2019-05-31 07:51:25
问得好!
与其只对匹配进行迭代,还不如对每个匹配进行一些操作,并获得结果。最好的方法是.map
函数(文档)。
就像你提到的,你需要从整个函数中返回一些东西。有几个选项,你想要的取决于最终的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速记,但希望这是清楚的发生了什么。
https://stackoverflow.com/questions/56383390
复制