这是一个视频,它展示了我正在挣扎的东西。
下面是对这个过程的高级描述,然后是我编写的实际JavaScript代码。
PROCESS我构建了两个Zaps,每个Zaps都是这样运行的:
步骤1-触发器(具有重复部分的认知形式)
步骤2- JavaScript代码(它为一个重复部分创建表单字段的数组,并使用.split将它们分离成单独的字符串)
步骤3-操作(为每个字符串创建一个ZOHO任务)
第一个Zap运行在表单的一个部分(使用Sales访问),第二个zap运行在表单的另一个部分(访问没有销售)。每个Zaps都可以单独工作,所以我知道代码很好,但是我想通过合并代码将这两个Zaps组合成一个。
我试着通过五个步骤结合起来:
触发器- Code1 - Zoho1 - Code2 - Zoho2
但是每个Zoho2任务都是重复的
然后我试着重新排序这五个步骤:
触发器- Code1 - Code2 - Zoho1 - Zoho2
但是现在Zoho1任务和Zoho2任务被复制了。
最后,我尝试将所有JavaScript代码合并成一个:
跳跳虎- CombinedCode1+2 - Zoho 1- Zoho2
但是,当我在Zoho1中映射数组时,只有“Zoho1”中的数组中的字符串对我可用。
代码:
if (inputData.stringVSAccount == null) {
var listVSAccountArray = [];
var listVSUnitsArray = [];
var listVSPriceArray = [];
var listVSNotesArray = [];
var listVSVisitCallArray = [];
} else {
var listVSAccountArray = inputData.stringVSAccount.split(",");
var listVSUnitsArray = inputData.stringVSUnits.split(",");
var listVSPriceArray = inputData.stringVSPrice.split(",");
var listVSNotesArray = inputData.stringVSNotes.split(",");
var listVSVisitCallArray = inputData.stringVSVisitCall.split(",");
}
var output = [];
var arrayNos = listVSAccountArray.length;
var i = 0;
do {
var thisItemVSAccount = new String(listVSAccountArray[i]);
var thisItemVSUnits = new String(listVSUnitsArray[i]);
var thisItemVSPrice = new String(listVSPriceArray[i]);
var thisItemVSNotes = new String(listVSNotesArray[i]);
var thisItemVSVisitCall = new String(listVSVisitCallArray[i]);
var thisItemObj = {};
thisItemObj.itemVSAccount = thisItemVSAccount;
thisItemObj.itemVSUnits = thisItemVSUnits;
thisItemObj.itemVSPrice = thisItemVSPrice;
thisItemObj.itemVSNotes = thisItemVSNotes;
thisItemObj.itemVSVisitCall = thisItemVSVisitCall;
output.push({ thisItemObj });
i++;
} while (i < arrayNos);
//This is where the second zaps code is pasted in the combined version
if (inputData.stringOVAccount == null) {
var listOVAccountArray = [];
var listOVNotesArray = [];
var listOVVisitCallArray = [];
} else {
var listOVAccountArray = inputData.stringOVAccount.split(",");
var listOVNotesArray = inputData.stringOVNotes.split(",");
var listOVVisitCallArray = inputData.stringOVVisitCall.split(",");
}
var output = [];
var arrayNos = listOVAccountArray.length;
var i = 0;
do {
var thisItemOVAccount = new String(listOVAccountArray[i]);
var thisItemOVNotes = new String(listOVNotesArray[i]);
var thisItemOVVisitCall = new String(listOVVisitCallArray[i]);
var thisItemObj = {};
thisItemObj.itemOVAccount = thisItemOVAccount;
thisItemObj.itemOVNotes = thisItemOVNotes;
thisItemObj.itemOVVisitCall = thisItemOVVisitCall;
output.push({ thisItemObj });
i++;
} while (i < arrayNos);这周我刚开始学习JavaScript,我觉得自己缺少了一些显而易见的东西,也许是一组括号。谢谢你的帮助
发布于 2018-05-30 19:47:07
大卫在这里,来自萨皮尔平台团队。您将遇到一个令人困惑且基本上没有文档记录的特性,在此特性中,每个项目在代码步骤后运行返回。这通常是需要的行为--当你返回3份意见书时,你想要创建3条记录。
在您的示例中,它还多次运行后续的无关操作,这听起来不太理想。在这种情况下,可能更容易有2次重击。或者,如果"Zoho2“只发生过一次,那么把它放在第一位,让分支发生在下游。
另外,我有一些未经请求的javascript建议(因为您提到您是初学者)。查看Array.forEach (文档),它允许您迭代数组,而不必管理同样多的变量(每次都是您自己的i )。此外,在可能的情况下,尝试使用let和const超过var --它使变量的作用域尽可能小,这样就不会意外地将值泄漏到其他区域。
,如果你还有其他问题,请告诉我!
发布于 2018-05-30 19:53:14
只需注意--在代码块的两个段中声明相同的数组变量output --第二个声明将被忽略。
使用.forEach()方法对数组进行迭代,将显着地清理代码。您也不需要费力地构造要推入output数组中的对象。
这可能不能解决您的问题,但代码要简单得多。
var listVSAccountArray = [],
listVSUnitsArray = [],
listVSPriceArray = [],
listVSNotesArray = [],
listVSVisitCallArray = [],
output = [];
if (typeof inputData.stringVSAccount === 'string') {
listVSAccountArray = inputData.stringVSAccount.split(',');
listVSUnitsArray = inputData.stringVSUnits.split(',');
listVSPriceArray = inputData.stringVSPrice.split(',');
listVSNotesArray = inputData.stringVSNotes.split(',');
listVSVisitCallArray = inputData.stringVSVisitCall.split(',');
}
// iterate over the array using forEach()
listVSAccountArray.forEach(function(elem, index){
// elem is listVSAccountArray[index]
output.push({
itemVSAccount: elem,
itemVSUnits: listVSUnitsArray[index],
itemVSPrice: listVSPriceArray[index],
itemVSNotes: listVSNotesArray[index],
itemVSVisitCall: listVSVisitCallArray[index]
})
})
//This is where the second zaps code is pasted in the combined version
var listOVAccountArray = [],
listOVNotesArray = [],
listOVVisitCallArray = [],
output_two = []; // changed the name of the second output array
if (typeof inputData.stringOVAccount === 'string') {
listOVAccountArray = inputData.stringOVAccount.split(',');
listOVNotesArray = inputData.stringOVNotes.split(',');
listOVVisitCallArray = inputData.stringOVVisitCall.split(',');
}
// iterate over the array using forEach()
listOVAccountArray.forEach(function(elem, index){
// elem is listOVAccountArray[index]
output_two.push({
itemOVAccount: elem,
itemOVNotes: listOVNotesArray[index],
itemOVVisitCall: listOVVisitCallArray[index]
});
});https://stackoverflow.com/questions/50567749
复制相似问题