1

我想遍历一个 json 对象并计算不同数组中具有相同值的元素。这是我的对象的示例

var testconn =
{"_total": 3,
    "values":
    [
        {
            "articlesRead": [
                { "articleId": 1001 },
                { "articleId": 1002 },
                { "articleId": 1003 },
                { "articleId": 1004 },
                { "articleId": 1005 },
                { "articleId": 1006 }
            ]
        },
        {
            "articlesRead": [
                { "articleId": 1001 },
                { "articleId": 1002 },
                { "articleId": 2001 },
                { "articleId": 2002 },
                { "articleId": 2003 },
                { "articleId": 2004 }
            ]
        },
        {
            "articlesRead": [
                { "articleId": 1001 },
                { "articleId": 3001 },
                { "articleId": 3002 },
                { "articleId": 3003 },
                { "articleId": 3004 },
                { "articleId": 3005 }
            ]
        }
    ]
}

我想计算数组中存在多少个 ID。所以对于这个例子,我应该有: 1001 x 3 1002 x 2 1003 x 1 1004 x 1 2001 x 1 等

我正在像这样循环我的对象

for (i = 0; i < testconn.values.length; i++) {
    var c = testconn.values[i];
    for (j = 0; j < c.articlesRead.length; j++) {
        var a = c.articlesRead[j];
        for (var key in a) {
            if (a[key] is bigger then 1) {
                count a[key]
            }
            return number of

        }
    }
}
4

2 回答 2

3

只需使用一个对象将值存储为键并递增它:

var id={};
for (var i = 0; i < testconn._total; i++) {
    var c = testconn.values[i];
    for (j = 0; j < c.articlesRead.length; j++) {
        var a = c.articlesRead[j];
        id[a.articleId]= id[a.articleId] ? ++id[a.articleId]: 1;
    }
}
console.log(id);
于 2012-08-17T13:45:43.683 回答
0

这是一个简单的方法,使用 4 个嵌套的 for 循环,虽然可能不是最有效的。

var list = testconn.values;
var dict = {};  


for(var i in list){
    for(var j in list[i]){
        for(var k in list[i][j]){
            for(var l in list[i][j][k]){
                var key = list[i][j][k][l];
                dict[key] = dict[key] ? ++dict[key] : 1;
            }
        }
    }
}

Dict 现在是您想要的关联数组。

于 2012-08-17T13:48:40.013 回答