我有一个包含一组key:值的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循环不会这样做。
由于
答案 0 :(得分: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
。
答案 1 :(得分:1)
假设所有评论&amp;编辑,这应该有所帮助:( fiddle)
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];