2015-02-07 2 views
1

이것은 내가하려고하는 것입니다.이름이 나타나는 시간은 어떻게 계산합니까?

이름이있는 입력란을 포함하는 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> 

존이 2 번 나타나고, 스테파니가 1 번 나타나고, 스티븐이 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

개미? 당신은 단지 당신이 "John John Stefany Steven Steven"과 같은 문자열을 가지고 있고 그것의 이름은 공백으로 분리되어 있습니다. 그리고 그 문자열에 각 이름의 발생. –

+0

어떻게이 데이터를 사용할 계획입니다. 이를 수행하는 몇 가지 방법이 있습니다. 올바른 데이터 구조는 사용 방법에 가장 적합한 데이터 구조의 종류에 따라 다릅니다. 예를 들어, 이것을 설명하는 단일 문자열에 대한 데이터가 필요하거나 @each #person_item에 각 이름 옆에 이름 수를 표시 하시겠습니까? 아니면 ... 당신은 그림을 얻을 – Charlie

+0

@MukeshAgarwal 답장을 보내 주셔서 감사합니다. 이름은 스팬에있다. 방금 설명을 업데이트했습니다. – KPO

답변

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); 

우리는 배열의 각 이름이 변수 이름의 주파수를 계산하고 업데이트에 대한 변수를 만들

+0

감사합니다. JSfiddle 예제를 제공 할 수 있습니까? 내가 이것을 사용할 때 다음과 같은 오류가 발생한다. Uncaught SyntaxError : 예기치 않은 토큰) – KPO

+0

실행 코드 예제 http://jsfiddle.net/GennadyUA/emqvz4a3/ – Gennady

+0

감사합니다. 그렇지만 어떻게하면 가장 먼저 사람을 보여줄 수 있습니까? 다른 사람들은 내림차순으로? – KPO

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; 
    } 
} 

이제 이름 배열에 이름의 단일 인스턴스가 있고 배열에 해당하는 항목이 있습니다.

관련 문제