2016-12-04 2 views
1

У меня есть таблица, созданная из внешней БД. Использование ниже линии я генерировать строки таблицы:jQuery/Javascript - распечатка числа вхождений определенной строки

var row = $("<div id='row' class='divTableRow'><div class='divTableCell'>"+(i+1)+"</div><div class='divTableCell'>"+fullName+"</div><div class='divTableCell'>"+username+"</div><div class='divTableCell'>"+resName+"</div><div class='divTableCell'>"+finalRating+"</div><div class='divTableCell'>"+date+"</div></div>"); 

$(".divTable").append(row); 

В таблице А есть столбец username который является в основном уникальным значением его пользователя.

То, что я хочу сделать, это создать столбец, называемый, например count, который должен должен число вхождений значения username

Пример:

 +----+------------+---------------+--------+-------+ 
     | No | Full Name | username | Outlet | Count | 
     +----+------------+---------------+--------+-------+ 
     | 1 | Stacy Gar | 0649039233 | Out2 | 2 | 
     +----+------------+---------------+--------+-------+ 
     | 2 | Jeremy Fa | 0349959522 | Out5 | 1 | 
     +----+------------+---------------+--------+-------+ 
     | 3 | Stacy Gar | 0649039233 | Out1 | 2 | 
     +----+------------+---------------+--------+-------+ 

Как вы можете видеть выше в таблица username0649039233 купил у Out1 и Out2, поэтому он имеет в колонке подсчета 2

Любые идеи о том, как я могу добиться аналогичных результатов при использовании jQuery или Javascript?

+0

Важно, я застрял в чем-то подобным, я хотел бы видеть ответ –

+1

Если вы можете создать пример в jsfiddle я был бы рад помочь Вам. – Chris

+0

не понимал, чего именно вы хотите достичь, если у вас есть число счетчиков, зачем вам это нужно в jquery? –

ответ

2

Для каждой строки, возьмите идентификатор пользователя, а затем использовать filter() на всей таблицы, чтобы подсчитать количество его вхождений:

$('tr').each(function() { 
 
    var userID = $(this).find('td:nth-child(3)').text(), 
 
     count; 
 

 
    count = $('td:nth-child(3)').filter(function() { 
 
    return $(this).text() === userID; 
 
    }).length; 
 

 
    $(this).find('td:last').text(count); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <tr><th>No<th>Full Name <th>username <th>Outlet <th>Count 
 
    <tr><td>1 <td>Stacy Gar <td>0649039233 <td>Out <td> 
 
    <tr><td>2 <td>Jeremy Fa <td>0349959522 <td>Out <td> 
 
    <tr><td>3 <td>Stacy Gar <td>0649039233 <td>Out <td> 
 
</table>

+0

Вы прибивали его! Большое спасибо! –

0

При создании строки вы можете сохраните имя пользователя и его номер в этом формате:

userName1: 2; userName2: 1; userName3: 1;

':' разделяет имя пользователя и его появление и ';' отдельные записи.

Прежде всего, у вас должно быть два массива.

var occurrence =[]; 
var userNames = []; 

и при создании каждой строки:

var index = userNames.indexOf(userName); 
if(index > 0) // the user name is repeated. we only increase occurrence 
{ 
occurrence[index] = occurrence[index] + 1; 
} 
else 
{ 
userNames.push(userName); 
occurrence.push[1]; 
} 

Теперь у вас есть то, что вы хотите:

возникновение USERNAMES [я] = вхождение [я];

И вы можете использовать так:

for(i=0;i<$('#yourTable').children('tr').length;i++) //or length-1 if you have header row 
{ 
row = $('#yourTable').children('tr').eq(i); // or eq(i+1) if you have header row 
row.children('td').eq(2).html(userNames[i])); 
row.children('td').eq(4).html(occurrence[i])); 
} 
Смежные вопросы