Javascript 按 JSON 对象中的值递增数组中的值

标签 javascript jquery arrays

我有一个包含一组键:值的 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 循环能够做到这一点。

谢谢

最佳答案

我将假装你的缓冲区是这样的:

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

Demo

关于Javascript 按 JSON 对象中的值递增数组中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13814273/

相关文章:

javascript - 如何在 Chrome 中使用 getUserMedia 对象获取播放视频

javascript - 是否可以使用 css 在全屏视频 (mp4) div 背景之上堆叠部分透明的 png 图像?

Javascript动态选择构造函数,这是不正确的吗?

java - 数组中负整数元素的最小总和,可以选择跳过元素但没有两个连续的元素

python - Numpy:如何确定 numpy 数组的所有元素是否都等于一个数字

javascript - 我的 $.getJSON 似乎没有从我的 JSON 文件中检索信息

javascript - 使用javascript查找两个日期之间的差异

javascript - openlayers 标记上的 Bootstrap 弹出窗口

javascript - 创建图像下载按钮支持所有浏览器

python - Numpy:将一维数组作为二维数组而不进行整形