3

Flot Chart プラグインを使用して棒グラフを作成しています。スクリプトが新しいデータを受け取ったら、その値を 1 増やす必要があります。

var data = [["A", 0], ["B", 0], ["C", 0], ["D", 0], ["E", 0]]
$.plot("#placeholder", [data], options);
channel.on("data", function (receiveddata) {
    data[receiveddata] = data[receiveddata] + 1
    $.plot("#placeholder", [data], options);
});

ここで、チャネルがデータとして「A」を受信するとします。1 ずつ増やしたいとします。私のコードは私が試したことを示しています

data.recieveddata

しかし、何も機能していません。

4

3 に答える 3

3

あなたはそれを行うでしょう:

data[0][1]++;

配列は次のようになります。

[ ["A", 1], ["B", 0], ["C", 0], ["D", 0], ["E", 0] ]
//^     ^
//|     | 1 in second array
//0 in first array

フィドル

キーとして使用するAには、オブジェクトが必要です。

var data = {A:0, B:0, C:0};

data[receiveddata] = 2;
于 2013-07-26T15:14:30.060 に答える
2

文字に基づいて正しいサブ配列を見つける必要があるため、外側の配列をループして、一致が見つかったらデータをインクリメントできます。動作するヘルパー関数は次のとおりです。

function incrementArray(array, letter){
    for(var i = 0; i < array.length; i++){
        var subArray = array[i];
        if(subArray[0] == letter){
            subArray[1]++;
            return;
        }
    }
}

次に、次のように使用します。

channel.on("data", function (receiveddata) {
    incrementArray(data, receiveddata);
    $.plot("#placeholder", [data], options);
});

これが実際の例です

于 2013-07-26T15:21:39.027 に答える
0

主な問題は、データ構造が配列の配列、ペアの配列である場合、オブジェクトのプロパティであるかのように参照していることです。

jQuery.grep を使用できます。

var data = [["A", 0], ["B", 0], ["C", 0], ["D", 0], ["E", 0]];

$.plot("#placeholder", [data], options);

channel.on("data", function (receiveddata) {

    var pair = $.grep(data, function (item) {
        return item[0] === receiveddata;
    })[0];

    if (pair) {
        pair[1]++;        
        $.plot("#placeholder", [data], options);
    } else {
        console.log("Could not determine receiveddata");
    }

}
于 2013-07-26T15:20:47.967 に答える