首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript:将CSV转换为分隔键和值的数组

Javascript:将CSV转换为分隔键和值的数组
EN

Stack Overflow用户
提问于 2015-05-05 09:41:37
回答 1查看 989关注 0票数 0

这里已经讨论过将CSV数据转换为Javascript数组,但这是另一种情况。

假设我们有CSV格式的数据,如下所示:

代码语言:javascript
运行
复制
one,two
three,four
five,six

我们可以使用split()函数或库(如jquery帕斯爸爸 )将其转换为JS数组,结构如下:

代码语言:javascript
运行
复制
[['one', 'two'], ['three', 'four'], ['five', 'six']]

但是如何将其转换为包含第一列和第二列数据的数组呢?比如:

代码语言:javascript
运行
复制
[['one', 'three', 'five'], ['two', 'four', 'six']]

当然,我们可以迭代所获得的键值对数组,并将键和值推入单独的数组中,但是有什么方法可以直接从CSV获得这样的结构呢?

将CSV数据解析为数组可能非常需要资源,因此跳过不必要的操作是很好的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-05 09:46:08

您可以使用下面的函数来转换数组:

代码语言:javascript
运行
复制
transpose = function(a) {

  // Calculate the width and height of the Array
  var w = a.length ? a.length : 0,
    h = a[0] instanceof Array ? a[0].length : 0;

  // In case it is a zero matrix, no transpose routine needed.
  if(h === 0 || w === 0) { return []; }

  /**
   * @var {Number} i Counter
   * @var {Number} j Counter
   * @var {Array} t Transposed data is stored in this array.
   */
  var i, j, t = [];

  // Loop through every item in the outer array (height)
  for(i=0; i<h; i++) {

    // Insert a new row (array)
    t[i] = [];

    // Loop through every item per item in outer array (width)
    for(j=0; j<w; j++) {

      // Save transposed data.
      t[i][j] = a[j][i];
    }
  }

  return t;
};
transpose([['one', 'two'], ['three', 'four'], ['five', 'six']]);

小提琴

来源:http://www.shamasis.net/2010/02/transpose-an-array-in-javascript-and-jquery

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30049406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档