0

整理されたダッシュボード インターフェイスに情報を表示するオンライン ツールを開発しています。CSV スプレッドシートからデータを取得し、CSV データ配列全体の 1 つのフィールドに応じて、それらを別の multiD 配列に分離しています。

これは私が試したことです:

        // 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++;
            }
        }

基本的にこれが何をするか:
産業フィールドが前のエントリと同じ場合、それをインデックス の arr 配列にスローします。そうでない場合は、次の産業indxの に 1 を追加します。indx

このソリューションの問題:
前の行が別の業界だったため、業界の 1 番目のエントリがスキップされarr[i-1][0]、最後の業界がチェックされ、次の業界の 1 番目の行がスキップされます。

このスクリプトを再フォーマットするにはどうすればよいですか:
for/while がネストされている可能性があると考えていましたが、よくわかりません。私がロジックを考えている方法は次のとおりです
。csv の各行について、業界の列は同じですが、それぞれに投げますinds[index]。または、 の同じ値で arr から行を抽出しますarr[i][0]

もっと簡単な解決策があると確信しており、それが私がここにいる理由です。私の考えが明確に伝われば幸いです。すべてのフィードバックに感謝します。

さらに明確にする必要がある場合は、コメントでお知らせください。

4

1 に答える 1

3

次のロジックは機能しますか?

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

更新しました。

于 2013-02-04T18:41:25.260 に答える