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 2001x1などが必要です。

私はこのように私のオブジェクトをループしています

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 に答える