获取具有特定属性的项的数组长度

时间:2014-08-22 22:07:21

标签: javascript jquery json d3.js

我试图获得属于'西北'的项目的百分比。从我的JSON文件中的项目列表。我的想法是获得属性为' Southeast'的项目数量的长度,除以数组的总长度,将其乘以100并显示百分比。

这是来自leads.json

的我的JSON
[{
"company": "Trasola",
"region": "Southwest", 
},
{
"company": "Hairport",
"region": "Southeast",
}]

JS

    <script>
  d3.json("data/leads.json", function(json){

    var length = $.map(json, function(d, i){ return i; }).length;
    var region = $.map(json, function(d, i){ return i.region === 'Southeast' }).length;

    console.log(region);
    console.log( (region/length)*100 );

  });

</script>

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

我不熟悉您使用的所有库,但我在纯JS中的方式如下,如果我不需要其他项目的数据,则简化它。

var counts = function(myData) {
    var tot = 0;
    var map = {};

    myData.forEach(function(entry){
        tot++;
        if (map[entry.region]) {
            map[entry.region]++;
        } else {
            map[entry.region] = 1;
        }
    });

    return {total: tot, map: map}
};

var print = function (data) {
    var metaData = counts(data);
    var map = metaData.map;
    var prop;

    console.log(map);
    for (prop in map) {
        if (map.hasOwnProperty(prop)) {
            console.log('printing');
            console.log(prop);
            console.log(map[prop])
            console.log(map[prop]/metaData.total*100 + "%")
        }
    }
}

print(data);