0

私はこのように見えるオブジェクトの配列を持っています

 [ {
      "created_date" : "2013-08-12T06:25:00",
      "descriptor" : "Noise, Barking Dog (NR5)"
    },
    {
      "created_date" : "2013-08-17T06:25:00",
      "descriptor" : "Noise, Barking Dog (NR5)"
    },
    {
      "created_date" : "2013-08-17T02:25:00",
      "descriptor" : "Noise, Barking Dog (NR5)"
    },
    {
      "created_date" : "2013-08-12T06:25:00",
      "descriptor" : "Loud Music"
    },
    {
      "created_date" : "2013-08-17T06:25:00",
      "descriptor" : "Loud Music"
    },
    {
      "created_date" : "2013-08-17T02:25:00",
      "descriptor" : "Construction Noise"
    },
    {
      "created_date" : "2013-08-17T02:25:00",
      "descriptor" : "Construction Noise"
    }]

問題は、「記述子」カテゴリの数とその名前をどのように数えるか、D3 または jquery を使用してこれにどのようにアプローチするかです。基本的にアイデアは、異なるグループを形成することです

4

3 に答える 3

2

d3 を使用して、それぞれをその出現回数にd3.map()マップできます。descriptor

var map = d3.map();
data.forEach(function(d) {
    var descriptorCount = map.get(d.descriptor);
    map.set(d.descriptor, descriptorCount === undefined ? 1 : ++descriptorCount);
});
console.log(map); // {Noise, Barking Dog (NR5): 3, Loud Music: 2, Construction Noise: 2}

フィドル

于 2013-08-22T20:16:22.173 に答える
0

配列を反復処理して、各記述子を収集するだけです。

var descriptors = (function(data) {
    var seen = {};
    data.forEach(function(obj) {
        seen[obj.descriptor] = true;
    });
    return Object.keys(seen);
}(data));

一意の記述子の数を取得するには、配列の長さを取得します。

descriptors.length

Object.keysまたはをサポートしていない古いブラウザをサポートする必要がある場合Array#forEach:

var descriptors = (function(data) {
    var seen = {};
    var descriptors = [];
    for (var i = 0, l = data.length; i < l; i++) {
        var descriptor = data[i].descriptor;
        if (!seen[descriptor]) {
            descriptors.push(descriptor);
            seen[descriptor] = true;
        }
    }
    return descriptors;
}(data));
于 2013-08-22T20:27:41.680 に答える