拆分数组并循环到 post 到网络挂钩端点
Split arrays and loop through to post to web hook endpoint
我试图从等长的 CSV 字符串中获取一些数据并拆分成数组,然后通过 Zapier 按顺序循环遍历这些数组到 post 单独的行到 JSON。
这是我当前的代码 - 为了便于理解,我在前 3 行输入了简化的 CSV 字符串:
var inputDataworkorders = "a,b,c,d,e,f"
var inputDatalats = "g,h,i,j,k,l"
var inputDatalongs = "m,n,o,p,q,r"
var workorder = inputDataworkorders.split(',')
var lat = inputDatalats.split(',')
var long = inputDatalongs.split(',')
var otherUrl = 'https://webpage.com/catch/13579/'
for (var i = 0; i <= workorder.length; i++) {
var payload = {
workorder: [workorder[i]],
lat: [lat[i]],
long: [long[i]],
};
}
fetch(otherUrl, {
method: 'POST',
body: JSON.stringify(payload)
}, callback)
.then(res => res.json())
.then(json => {
callback(null, json);
console.log(json)
});
我想要的是第一个循环这样的东西:
{workorder: "b",
lat: "h",
long: "n"}
这是第二个循环,依此类推:
{workorder: "a",
lat: "g",
long: "m"}
我已经阅读了我能找到的所有可能的帮助文章,并且还尝试通过 Freelancer 获得一些帮助,但无济于事。这对我来说似乎不是一个高级概念,但这超出了我的基本理解。非常感谢任何指导。
三期:
- 您需要一个包含循环中创建的每个
payload
的数组。否则,您使用 fetch()
发送的 payload
将只是在 for()
循环 中创建的最后一个对象
- 摆脱
[]
包装对象中每个 属性 的值
- 您的循环迭代必须小于数组长度而不是
<=
,因为长度是从 1 开始的计数,但数组索引从零开始。如果你做 <=
最后一次迭代超过数组的长度
var inputDataworkorders = "a,b,c,d,e,f"
var inputDatalats = "g,h,i,j,k,l"
var inputDatalongs = "m,n,o,p,q,r"
var workorder = inputDataworkorders.split(',')
console.log(workorder)
var lat = inputDatalats.split(',')
var long = inputDatalongs.split(',')
var otherUrl = 'https://webpage.com/catch/13579/'
// array to store all `payload` objects
var results =[];
for (var i = 0; i < workorder.length; i++) {
var payload = {
workorder: workorder[i],
lat: lat[i],
long: long[i],
};
results.push(payload)
}
console.log(results)
// now send `results` array to server
在您的有效负载变量中,您将每个 属性 作为数组传递。要获得所需的输出,只需将其更改为:
for (var i = 0; i <= workorder.length; i++) {
var payload = {
workorder: workorder[i],
lat: lat[i],
long: long[i]
};
}
您需要在 for 循环中调用 fetch 或将负载存储在数组中并推送到它。
也不要忘记将循环更改为仅 < 而不是 <= 因为 i = 0 最后的结果将未定义。
我试图从等长的 CSV 字符串中获取一些数据并拆分成数组,然后通过 Zapier 按顺序循环遍历这些数组到 post 单独的行到 JSON。
这是我当前的代码 - 为了便于理解,我在前 3 行输入了简化的 CSV 字符串:
var inputDataworkorders = "a,b,c,d,e,f"
var inputDatalats = "g,h,i,j,k,l"
var inputDatalongs = "m,n,o,p,q,r"
var workorder = inputDataworkorders.split(',')
var lat = inputDatalats.split(',')
var long = inputDatalongs.split(',')
var otherUrl = 'https://webpage.com/catch/13579/'
for (var i = 0; i <= workorder.length; i++) {
var payload = {
workorder: [workorder[i]],
lat: [lat[i]],
long: [long[i]],
};
}
fetch(otherUrl, {
method: 'POST',
body: JSON.stringify(payload)
}, callback)
.then(res => res.json())
.then(json => {
callback(null, json);
console.log(json)
});
我想要的是第一个循环这样的东西:
{workorder: "b",
lat: "h",
long: "n"}
这是第二个循环,依此类推:
{workorder: "a",
lat: "g",
long: "m"}
我已经阅读了我能找到的所有可能的帮助文章,并且还尝试通过 Freelancer 获得一些帮助,但无济于事。这对我来说似乎不是一个高级概念,但这超出了我的基本理解。非常感谢任何指导。
三期:
- 您需要一个包含循环中创建的每个
payload
的数组。否则,您使用fetch()
发送的payload
将只是在for()
循环 中创建的最后一个对象
- 摆脱
[]
包装对象中每个 属性 的值 - 您的循环迭代必须小于数组长度而不是
<=
,因为长度是从 1 开始的计数,但数组索引从零开始。如果你做<=
最后一次迭代超过数组的长度
var inputDataworkorders = "a,b,c,d,e,f"
var inputDatalats = "g,h,i,j,k,l"
var inputDatalongs = "m,n,o,p,q,r"
var workorder = inputDataworkorders.split(',')
console.log(workorder)
var lat = inputDatalats.split(',')
var long = inputDatalongs.split(',')
var otherUrl = 'https://webpage.com/catch/13579/'
// array to store all `payload` objects
var results =[];
for (var i = 0; i < workorder.length; i++) {
var payload = {
workorder: workorder[i],
lat: lat[i],
long: long[i],
};
results.push(payload)
}
console.log(results)
// now send `results` array to server
在您的有效负载变量中,您将每个 属性 作为数组传递。要获得所需的输出,只需将其更改为:
for (var i = 0; i <= workorder.length; i++) {
var payload = {
workorder: workorder[i],
lat: lat[i],
long: long[i]
};
}
您需要在 for 循环中调用 fetch 或将负载存储在数组中并推送到它。
也不要忘记将循环更改为仅 < 而不是 <= 因为 i = 0 最后的结果将未定义。