如何计算名称出现的次数?

时间:2015-02-07 19:34:12

标签: javascript jquery count

这就是我想要做的事情:

我有一个包含名称字段的API响应。我成功地获得了响应但是使用JavaScript我想要计算一个名称重复的次数。例如:

<span class="person_name">John</span>
<span class="person_name">John</span>
<span class="person_name">Stefany</span>
<span class="person_name">Steven</span>
<span class="person_name">Steven</span>

我希望能算出John出现2次,Stefany出现1次,Steven出现2次。

到目前为止我尝试了什么?

$(function () {
            $.ajax({
                url: "API_CALL",
                dataType: 'jsonp',
                success: function (results) {
                    var imagesArray = new Array();
                    var allMedia = results.data._embedded.media;
                    for (var i = 0; i < allMedia.length; i++) {
                        var media1 = allMedia[i];
                        var imagesHtml = "<div id='person_item'>";
                        imagesHtml += "<span class='person_name'>{0}
</span>".replace("{0}", media1._embedded.person.name);
                        imagesHtml += "</div>";
                        imagesArray.push(media1.images.square);

                        $("#list").append(imagesHtml);
                    }
                    var numItems = $('.person_name').length
    console.log(numItems);
                }

            });

});

2 个答案:

答案 0 :(得分:1)

var results = {
    data: {
        _embedded: {
            media: [{
                _embedded: {
                    person: {name : 'John'}
                }
            },
            {
                _embedded: {
                    person: {name : 'John'}
                }
            },
            {
                _embedded: {
                    person: {name : 'Stefany'}
                }
            },
            {
                _embedded: {
                    person: {name : 'Steven'}
                }
            },
            {
                _embedded: {
                    person: {name : 'Steven'}
                }
            },{
                _embedded: {
                    person: {name : 'Steven'}
                }
            }]
        }
    }
};

var allMedia = results.data._embedded.media;
var countNames = {};
var name;
for (var i = 0; i < allMedia.length; i++) {
    var media1 = allMedia[i];
    name = media1._embedded.person.name;
    countNames[name]  = countNames.hasOwnProperty(name) ? ++countNames[name] : 1;
}
console.log(countNames);

我们创建一个用于计算名称频率的变量,并为数组中的每个名称更新此变量

答案 1 :(得分:0)

你可以使用这样的东西,希望这一切都是你想要的

var numItems = $('.person_name').length;
 var name = [];
 var occ =[];
 for(var i=0;i<numItems.length;i++)
 {
    if(occ[numItems[i].val())
    {
       occ[numItems[i]++;
    }
    else
    {
       name.push(numItems[i].val());
       occ[numItems[i].val()] = 1;
    }
 }

现在你在name数组中有一个name实例,并且在occ数组中有相应的出现