Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   группировка одинаковых ячеек таблицы (https://javascript.ru/forum/misc/40424-gruppirovka-odinakovykh-yacheek-tablicy.html)

Vampir3 05.08.2013 09:25

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

<table id="stuff">
<tr>
<td>
Ель
</td>
</tr>
 <tr>
<td>
Дуб
</td>
</tr>
 <tr>
<td>
Клен
</td>
</tr>
 <tr>
<td>
Дуб
</td>
</tr>
 <tr>
<td>
Ель
</td>
</tr>
</table>


нужно сделать группировку повторяющихся элементов
тоесть результат должен быть примерно таким:

Ель: 5
Дуб: 2
Клен: 1

Vampir3 06.08.2013 01:03

неужели невозможно?

рони 06.08.2013 01:13

Vampir3, а обойти все ячейки не судьба?
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
  <table id="stuff">
    <tr>
      <td>Ель</td>
    </tr>

    <tr>
      <td>Дуб</td>
    </tr>

    <tr>
      <td>Клен</td>
    </tr>

    <tr>
      <td>Дуб</td>
    </tr>

    <tr>
      <td>Ель</td>
    </tr>
  </table><script>
var a = document.getElementById("stuff").getElementsByTagName("td");
  obj = {};
  for (var b = 0; b < a.length; b++) {
    var c = a[b].firstChild.data;
    obj[c] ? obj[c]++ : obj[c] = 1
  }
  for (var d in obj) document.write(d + " " + obj[d] + "<br />");
  </script>
</body>
</html>

Deff 06.08.2013 01:54

var str = '<table id="stuff">\
<tr>\
<td>\
Ель\
</td>\
</tr>\
 <tr>\
<td>\
Дуб\
</td>\
</tr>\
 <tr>\
<td>\
Клен\
</td>\
</tr>\
 <tr>\
<td>\
Дуб\
</td>\
</tr>\
 <tr>\
<td>\
Ель\
</td>\
</tr>\
</table>';
var arr =str.split(/<[^>]*>/gim).join(',').split(/(\s*,)+/gim).join(',').split(/,+/)
arr.splice(0,1);arr.pop();
var obj={};
for(var i=0;i<arr.length;i++){
  if(!obj[arr[i]])obj[arr[i]]=0;
  obj[arr[i]]++;
}
   arr = [],j=0;
for(var i in obj){
   arr[j] = i+':'+obj[i];
   j++;
}
alert(arr.join('\n'))

:)

Vampir3 06.08.2013 10:14

ухх.. спасибо)


Часовой пояс GMT +3, время: 18:22.