【问题标题】:Cycle through and separate CSV data into secondary array depending on value根据值循环遍历 CSV 数据并将其分离到辅助数组中
【发布时间】:2013-01-19 12:46:05
【问题描述】:

我正在开发一个在线工具来在有组织的仪表板界面中显示信息。 我正在从 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中添加一个用于下一个行业。

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

如何重新格式化此脚本:
我在想也许嵌套了/while,但不确定。我思考逻辑的方式是:
对于 csv 的每一行,虽然行业列是相同的,但折腾到各自的inds[index]。或者,通过 arr[i][0] 的相同值从 arr 中提取行。

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

如果您需要更多说明,请在 cmets 中告诉我。

【问题讨论】:

  • 这些语言中没有“多维数组”;你只能嵌套数组(严格来说,数组的一个元素可以是对另一个 Array 实例的引用),这是另一回事。从您的描述中我不清楚代码打算做什么。请提供预期输入和输出数据的示例,以便建议问题的解决方案,而不是修复您的代码。

标签: javascript arrays loops for-loop while-loop


【解决方案1】:

以下逻辑有效吗?

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]);
        }

已更新。

【讨论】:

  • (并以 indx = -1 而不是 0 开头;)
  • 确实工作得更好一些。但它仍然跳过了该领域的第一个行业实例arr[i][0]
  • oooo.. console.log 很性感!完美的!太感谢了!一直在我的桌子上敲我的头,试图让它正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-18
  • 1970-01-01
  • 2022-01-19
  • 2021-03-18
  • 1970-01-01
  • 2018-11-03
相关资源
最近更新 更多