这里已经讨论过将CSV数据转换为Javascript数组,但这是另一种情况。
假设我们有CSV格式的数据,如下所示:
one,two
three,four
five,six我们可以使用split()函数或库(如jquery或帕斯爸爸 )将其转换为JS数组,结构如下:
[['one', 'two'], ['three', 'four'], ['five', 'six']]但是如何将其转换为包含第一列和第二列数据的数组呢?比如:
[['one', 'three', 'five'], ['two', 'four', 'six']]当然,我们可以迭代所获得的键值对数组,并将键和值推入单独的数组中,但是有什么方法可以直接从CSV获得这样的结构呢?
将CSV数据解析为数组可能非常需要资源,因此跳过不必要的操作是很好的。
发布于 2015-05-05 09:46:08
您可以使用下面的函数来转换数组:
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
https://stackoverflow.com/questions/30049406
复制相似问题