繁体   English   中英

如何为所有列按列拆分数组? (JavaScript的)

[英]How do i split an array per column for all columns? (JavaScript)

您好,JavaScript同行,

我有一个从csv文件中的数据创建的数组,如下所示:

CSV文件中的数组

在这种情况下,每个数组索引(例如array [0])都是标头,其中有87个标头。 该数组中的所有其他数组都是行。

我需要获取该数据并在各列之间进行拆分

以下代码仅用于第一列:

      var specialCounter = 0;
        for(var j = 1; j<vm.lines.length; j++){
            vm.columns.push(vm.lines[j][0]);

            if(specialCounter >= vm.lines[j][0].length)
                specialCounter = 0;
            else
                specialCounter++;
        }

        vm.columnData.columnData= vm.columns;

        console.log(vm.columnData);

这是它吐出的数组。

排列

我如何对此数组中的所有列执行此操作?

可能具有类似vm.dataPerColumn = [{column1: [...], column2: [...], etc...]

减少数组, forEach子数组检查键是否存在,如果不存在,请在结果对象( r )上创建键。 将当前项目按到键:

 var arr = [['h1', 1, 2, 3], ['h2', 4 , 5 , 6], ['h3', 7, 8, 9]]; var result = arr.reduce(function(r, a) { a.forEach(function(s, i) { var key = i === 0 ? 'headers' : 'column' + i; r[key] || (r[key] = []); // if key not found on result object, add the key with empty array as the value r[key].push(s); }); return r; }, {}); console.log(result); 

通过阅读说明并查看图片,标题似乎在array[0]

const vm = {};
vm.lines = [["$", "house", "car"],[5, 10, 15],[25,35,45]]; 

const headers = vm.lines[0];
const data = vm.lines.slice(1);

const columns = data.reduce((newColumns, row) => {
    for(let i=0;i<row.length;i++){
        if(newColumns.length-1 < i){ //first column;
            newColumns.push([]);
        }
        newColumns[i].push(row[i]);
    }
    return newColumns;
}, []);

const columnsWithHeaders = headers.map((header, index) => ({[header]:columns[index]}));

console.log(columnsWithHeaders);

您请求了column1,column2等,但是当您已经有一个数组时,这实际上没有任何意义,因此我将标题名称与相应的列放在一起,然后可以直接引用它

我所做的是将标题和数据分开。 因此您不必担心第一行,

然后,我将行转换为列,然后,您可以遍历标题并将列数组添加到每个标题中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM