【问题标题】:How to make a loop that continues from the end of the index of an ended for loop?如何创建一个从结束的 for 循环的索引末尾继续的循环?
【发布时间】:2021-07-25 19:04:47
【问题描述】:

我需要手动制作一个 csv 字符串。为此,我有 2 个数组,一个用于标题,一个用于数据。我几乎尝试了所有方法,大多数情况下我都陷入了一个永无止境的循环。

    function addDataLineToCsv(headers, data, index) {
       var returnString = ""
       for (index; index <= headers.length; index++) {
           returnString += data[index]
       }
    }

这里的问题是我有指定数量的标题。但是在数组“数据”中,我有所有按标题排序的数据。例如:

var headers =' ['ID', 'name', 'age'] 


那么数据数组如下所示:

var data = ['ID(data)', 'name(data)', 'age(data)', 'ID(data)', 'name(data)', 'age(data)'....]

我想要做的是循环遍历数组“数据”,但始终使用标题的计数,以便获得一种“组”效果,我可以在其中向字符串添加行,例如:

ID,name,age
 0, John, 25
 1, Jane, 23

谢谢你的帮助,如果我的问题有点混乱,请原谅。

【问题讨论】:

  • a) 在循环中声明let index b) 用= 0 初始化它 c) 循环while index &lt; headers.length,而不是&lt;=
  • 您的index 指向headers,而不是data。请向我们展示您的 data 数组的实际外观示例。

标签: javascript arrays loops csv iteration


【解决方案1】:

您的group_item_count 将是您的headers.length

let data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

let group_item_count = 4;
let data_length = data.length

for(let i = 0; i < data_length; i += group_item_count){
  let offset = group_item_count;
  if(i + offset > data_length) {
    offset = data_length % group_item_count;
  }
  let group = data.slice(i, i + offset)
  console.log(group)
}

您基本上可以使用此代码迭代“组”中的平面数组(每个“组”的长度为group_item_count)。如您所见,如果 data.length 不能被 group_item_count 整除而没有余数,则最后一个“组”的长度将是除法的余数。

【讨论】:

  • 非常感谢!我应该考虑一下。 :D
  • 不客气,下次出现时你会考虑的:D
猜你喜欢
  • 1970-01-01
  • 2021-12-04
  • 2021-01-23
  • 1970-01-01
  • 2015-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
相关资源
最近更新 更多