0

我有一个 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 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 回答
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 回答