0

key:value のセットを含む JSON オブジェクトがあります。最初にキーが配列値と一致するかどうかを最初に確認し、次にその配列内の同じバッファ配列に値を追加するかどうかを確認します。

うまくいけば、私が何を意味するのかを示す私のコードは次のとおりです。

ws.onmessage = function(evt){
 cities = JSON.parse(evt.data);
            for(var i=0; i<buffer.length; i++) {                
                if(buffer[i][0] == cities.clusters) {
                    buffer[i][1][0]++;
                }
            console.log(buffer);
            }
       };

これは私のバッファ配列です:

var buffer = [['1',[0]],['2',[0]],['3',[0]],['4',[0]]];

これは、サーバーから受け取った JSON 出力です。

{"clusters": {"London": 4, "Atlanta": 5}, "time": "2012-11-22 19:56:25"} 

だから私が欲しいのは、この反復のバッファ配列が次のようになることです:

 var buffer = [['London',[4]],['New York',[0]],['Atlanta',[5]],['LA',[0]]];

反復ごとに、これらの金額が追加されて更新されます。

これを行う方法がわかりません。また、for ループで実行できるとは思いません。

ありがとう

4

2 に答える 2

1

すべてのコメントと編集を想定すると、これが役立つはずです:(フィドル)

var data = {} ; // From Webservice

var buffer = [['London',[4]],['New York',[0]],['Atlanta',[5]],['LA',[0]]];

var clusters = data.clusters;

for (var i in clusters) for(var j in buffer) 

     if(buffer[j][i])  buffer[j][i] = cluster[i];   
于 2012-12-11T05:53:10.087 に答える
1

あなたのバッファがこれであるふりをします:

var buffer = [['London',[0]],['New York',[0]],['Atlanta',[0]],['LA',[0]]];

次に、ループは次のようになります。

for (var i = 0, item; item = buffer[i]; ++i) {
    buffer[i][1][0] = cities.clusters[item[0]] || 0;
}

cities.clusters[item[0]] || 0は、それぞれの都市の値を使用するか0、定義されていない場合。

デモ

于 2012-12-11T05:49:38.560 に答える