3

jQuery CSV ( https://github.com/evanplaice/jquery-csv/ )を使用して csv ファイルを jQuery オブジェクトに変換しました。

そのためのコードは次のとおりです。

    $.ajax({
        type: "GET",
        url: "/path/myfile.csv",
        dataType: "text",
        success: function(data) {
        // once loaded, parse the file and split out into data objects
        // we are using jQuery CSV to do this (https://github.com/evanplaice/jquery-csv/)

        var data = $.csv.toObjects(data);
    });

オブジェクトのキーごとに値を合計する必要があります。具体的には、bushels_per_day の値を会社別に合計する必要があります。

オブジェクト形式は次のようになります。

    var data = [
        "0":{
            beans: "",
            bushels_per_day: "145",
            latitude: "34.6059253",
            longitude: "-86.9833417",
            meal: "",
            oil: "",
            plant_city: "Decatur",
            plant_company: "AGP",
            plant_state: "AL",
            processor_downtime: "",
        },
        // ... more objects
    ]

これは機能していません:

    $.each(data, function(index, value) { 
        var capacity = value.bushels_per_day;
        var company = value.plant_company.replace(/\W+/g, '_').toLowerCase();
        var sum = 0;
        if (company == 'agp') {
            sum += capacity;
            console.log(sum);
        }
    });

会社ごとに先頭にゼロを付けて、それぞれの値を返すだけです。

0145

0120

060

これどうやってするの?

4

2 に答える 2

3

parseInt()文字列を数値に変換するために使用する必要があります。それ以外の場合,、 +` は加算ではなく文字列連結を行います。

sumまた、ループの外で初期化する必要があります。そうしないと、合計が毎回クリアされ、合計が計算されません。

var sum = 0;
$.each(data, function(index, value) { 
    var capacity = parseInt(value.bushels_per_day, 10);
    var company = value.plant_company.replace(/\W+/g, '_').toLowerCase();
    if (company == 'agp') {
        sum += capacity;
        console.log(sum);
    }
});
于 2015-01-29T03:20:43.103 に答える
0

sum内部でローカル変数を使用して$.eachいます。この値は反復ごとに再割り当てされ、変数bushels_per_dayは型指定されているため、JS はその値を値stringと連結するだけです。sum

これを試してください。それは私のために働いた

于 2015-01-29T03:57:52.897 に答える