这就是我想要做的事情:
我有一个包含名称字段的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);
}
});
});
答案 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数组中有相应的出现