2016-04-06 4 views
1

Моей переменной tag возвращает один из этих 4-х различных значений: assistance, bug, evolution или maintenance. Я хотел бы подсчитать, сколько раз у меня есть каждое из этих слов. Я хотел бы показать, сколько раз у меня есть каждый из этих элементов в моей консоли. Я действительно не знаю, как это сделать. Вот мой код:Подсчитайте, сколько раз у меня есть то же самое слово

function displaytickets(y){ 
    $.ajax({ 
     url: "https://cubber.zendesk.com/api/v2/users/" + y + "/tickets/requested.json?per_page=150", 
     type: 'GET', 
     dataType: 'json', 
     cors: true , 
     contentType: 'application/json', 
     secure: true, 
     beforeSend: function(xhr) { 
      xhr.setRequestHeader ("Authorization", "Basic " + btoa("")); 
     }, 
     success: function(data) { 
      var sortbydate = data.tickets.sort(function(a, b){ 
       return new Date(b.created_at) - new Date(a.created_at); 
      }); 
      var ids = $.map(data.tickets, function (data) { 
       return data.id; 
      }) 
      localStorage.setItem("mesid", ids); 

      for (i = 0; i < data.tickets.length; i++) { 
       var myticket = data.tickets[i]; 
       var mydate = data.tickets[i].created_at; 
       var created = moment(mydate).format("MM-DD-YY"); 
       var mytitle = data.tickets[i].subject; 
       var description = data.tickets[i].description; 
       var status = data.tickets[i].status; 
       var tag = data.tickets[i].tags[0]; 
       console.log(tag); 
       var myid = data.tickets[i].id; 
      } 

      var nbticket = data.tickets.length; 
      $("#name").append('<h2 class="title">' + " " + nbticket + " ticket(s)" + '</h2>'); 
     }, 
    }); 
} 

Вот что я получаю от консоли для console.log(tag):

enter image description here

+0

Вы забыли закрыть строку: '" Basic "+ btoa (")); '(которая почему остальная часть вашего кода красная) – somethinghere

+0

нет, я не забыл, что я удаляю его, потому что было мое имя пользователя и пароль для подключения к моему API – xenurs

+3

Действительно, но это имеет значение. Я не сказал, что это проблема :) – somethinghere

ответ

1

Вы можете достичь этого, используя объект для хранения количества совпадений, введенных самой строкой. Попробуйте это:

var occurrences = {}; 

Затем в success обработчике вы можете добавлять и увеличивать тег, как вы их найдете:

success: function(data) { 
    // your code here... 

    for (i = 0; i < data.tickets.length; i++) { 
     // your code here... 

     var tag = data.tickets[i].tags[0]; 
     if (occurrences.hasOwnProperty(tag)) { 
      occurrences[tag]++; 
     } else { 
      occurrences[tag] = 1; 
     }    
    } 

    console.log(occurrences); 
}, 

Working example

1

Пробовали ли вы считать его в for loop?

var maintenance_counter = 0; 
for (i = 0; i < data.tickets.length; i++) { 
    var myticket = data.tickets[i]; 
    var mydate = data.tickets[i].created_at; 
    var created = moment(mydate).format("MM-DD-YY"); 
    var mytitle = data.tickets[i].subject; 
    var description = data.tickets[i].description; 
    var status = data.tickets[i].status; 
    var tag = data.tickets[i].tags[0]; 
    var myid = data.tickets[i].id; 

    if(tag == "maintenance"){ 
     maintenance_counter++; 
    } 

} 

alert("Total maintenance occurrence:"+ maintenance_counter); 
+0

Ну, ваш ответ не совсем то, что я хочу но это хорошее начало :) – xenurs

1

Создать объект для хранения ваших тегов подсчета результатов, аналогичным к этому:

var tagCount = {}; 
for (i = 0; i < data.tickets.length; i++) { 
    var tag = data.tickets[i].tags[0]; 
    if (tagCount[tag] === undefined) { 
    tagCount[tag] = 1; 
    } else { 
    tagCount[tag] += 1; 
    } 

} 

console.log(tagCount); 
Смежные вопросы