循环浏览CSV数据并根据值将其分离到辅助阵列中

Cycle through and separate CSV data into secondary array depending on value

本文关键字:分离 阵列 CSV 浏览 数据 循环      更新时间:2023-09-26

我正在开发一个在线工具,以在有组织的仪表板界面中显示信息。我从CSV电子表格中提取数据,并根据整个CSV数据数组中的一个字段将它们分离到另一个多维数组中。

这就是我尝试过的:

        // arr is the array that holds the entire CSV data
        // inds is where I need the entries separated by industry (arr[i][0])
        var indx = 0; // using to add new array to inds array
        for(var i = 1; i < arr.length-1; i++){ 
            if(arr[i][0] === arr[i-1][0]) {
                if(! inds[indx] ) {
                    inds[indx] = []
                } else {
                    inds[indx].push(arr[i]);
                }
            } else {
                indx++;
            }
        }

基本功能:
如果行业字段与之前的条目相同,则将其放入索引为indx的arr数组中,否则,在下一个行业的indx中添加一个。

此解决方案的问题:
它跳过了行业的第一个条目,因为前一行是另一个行业,所以arr[i-1][0]正在检查上一个行业并跳过下一个行业的第一行。

如何重新格式化此脚本:
我在想也许嵌套了一段时间,但不确定。我思考逻辑的方式是:
对于csv的每一行,当行业列相同时,将其放入各自的inds[index]中。或者,按照arr[i][0]的相同值从arr中提取行。

我相信有一个更简单的解决方案,这就是我来这里的原因,所以我希望我能清楚地表达我的想法,我感谢所有的反馈。

如果你需要更多的澄清,请在评论中告诉我。

以下逻辑工作吗?

var indx = -1;
 // using to add new array to inds array
        for(var i = 1; i < arr.length-1; i++){ 
            if(arr[i][0] !== arr[i-1][0]) {
                indx++;
                inds[indx] = []
            }
            inds[indx].push(arr[i]);
        }

已更新。