0

インデックスを介してオブジェクトを配列の配列にプッシュするのに苦労しています。CSV ファイルの行 (形式: 日付、理由コード) を読み取り、理由コードに応じて FROM と TO (日付) のペアを作成する現在の (ひどく重複したコード) 以下を見つけます。この配列は、ハイチャート (ガント チャート) に使用されます。fromto1およびfromto2配列 に注意してください。

csv = csv.split(/\n/g);
var fromto1 = [];                   //array of FROM and TO pairs of code 1
    fromto2 = [];                   //array of FROM and TO pairs of code 2
    count = [];
    lastFrom = [];

for (var i=1;i<3;i++) {                 //set all count and lastFrom variables to 0     //bs
    count[i] = 0;
    lastFrom[i] = 0;
}

jQuery.each(csv, function(i, line) {

    line = line.split(',');                 //splits line, returns array of splitted values
    date = parseInt(line[0], 10)*1000;      //read date from line into string
    reasonC = parseInt(line[2], 10);        //read reasonC from line into string

if (reasonC == "1") {
    count[1]++;
    if (count[1] % 2 !=0){          //if it is an uneven value (FROM values)  
        lastFrom[1] = date;         //temporary save the date in lastFrom[]
    }
    else {                          //if it is an even value (TO value), push the pair
        fromto2.push({ 
            from: lastFrom[1],
            to: date
        });
    }   
}

if (reasonC == "2") {
    count[2]++;
    if (count[2] % 2 !=0){          
        lastFrom[2] = date;         
    }
    else {                          
        fromto3.push({ 
            from: lastFrom[2],
            to: date
        });
    }
}

fromto上記のコードをこれに置き換えることができないのはなぜですか (配列の配列に注意してください):

csv = csv.split(/\n/g);
var fromto = [];                    
    count = [];
    lastFrom = [];

for (var i=1;i<3;i++) {                 //set all count and lastFrom variables to 0     
    count[i] = 0;
    lastFrom[i] = 0;
    fromto.push(new Array());
    console.log(i+': New Array Pushed');
}

jQuery.each(csv, function(i, line) {

    line = line.split(',');                 //splits line, returns array of splitted values
    date = parseInt(line[0], 10)*1000;      //read date from line into string
    reasonC = parseInt(line[2], 10);        //read reasonC from line into string

    for (var c=1;c<3;c++) {
        if (reasonC == c.toString()) {
            count[c]++;
            if (count[c] % 2 !=0){          //if it is an uneven value (FROM values)  
                lastFrom[c] = date;         //temporary save the date in lastFrom[]
            }
            else {                          //if it is an even value (TO value), push the pair
                fromto[c].push({ 
                    from: lastFrom[c],
                    to: date
                });
            }   
        }
    }
}

fromto[c].push({空の配列のままなので、問題があると思います。私はまだ Jsnoob であり、他のスレッドで回答を見つけることができませんでした。ご協力をお願いします。

4

1 に答える 1