拆分数组并循环以发布到Web挂钩端点

时间:2018-04-28 13:23:49

标签: javascript arrays json split zapier

我试图从等长的CSV字符串中取出一些数据并拆分成数组,然后依次循环遍历这些数组,通过Zapier将各行发布到JSON。

这是我目前的代码 - 为了便于理解,我输入了简化的CSV字符串作为前3行:

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获得一些帮助,但无济于事。它对我来说似乎不是一个先进的概念,但这超出了我的基本理解。非常感谢任何指导。

2 个答案:

答案 0 :(得分:0)

三个问题:

  1. 您需要一个包含循环中创建的每个payload的数组。否则,您使用payload发送的fetch()将只是for()循环中创建的最后一个对象
  2. 摆脱[]包装对象中每个属性的值
  3. 您的循环迭代必须小于数组长度而不是<=,因为长度是从1开始的计数,但数组索引从零开始。如果你进行<=最后一次迭代,则射击数组的长度
  4. &#13;
    &#13;
    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
    &#13;
    &#13;
    &#13;

答案 1 :(得分:0)

在有效负载变量中,您将每个属性作为数组传递。要获得所需的输出,只需将其更改为:

for (var i = 0; i <= workorder.length; i++) {
    var payload = {
        workorder: workorder[i],
        lat: lat[i],
        long: long[i]
    };
}

您需要在for循环中调用fetch或将有效负载存储在数组中并推送到它。

另外,请不要忘记将循环更改为&lt; 而不是&lt; = ,因为i = 0,最后的结果将是未定义的。< / p>