Foros del Web » Programando para Internet » Jquery »

Contabilizar registros, segun condicion en el mismo <tr>

Estas en el tema de Contabilizar registros, segun condicion en el mismo <tr> en el foro de Jquery en Foros del Web. Hola Amigos, tengo una tabla y la idea es contabilizar cuantos <td> cumplen una condicion dentro de otro <td> (que forme parte del mismo <tr>), ...
  #1 (permalink)  
Antiguo 28/10/2018, 15:16
 
Fecha de Ingreso: septiembre-2007
Mensajes: 150
Antigüedad: 17 años, 2 meses
Puntos: 1
Contabilizar registros, segun condicion en el mismo <tr>

Hola Amigos, tengo una tabla y la idea es contabilizar cuantos <td> cumplen una condicion dentro de otro <td> (que forme parte del mismo <tr>), en este ejemplo la condicion es que en el td sea "verde".

Código HTML:
<table>
    <tr>
	<td>rojo</td> 
        <td>circulo</td> 
    </tr>
    <tr>
        <td>verde</td> 
        <td>triangulo</td> 
    </tr> 
    <tr>
        <td>rojo</td> 
        <td>cuadrado</td>  
    </tr>
	<tr>
        <td>verde</td> 
        <td>circulo</td>  
    </tr>
	<tr>
        <td>verde</td> 
        <td>triangulo</td>  
    </tr>
</table> 
que me arroje un resultado asi: circulo=1, triangulo=2, cuadrado =0
  #2 (permalink)  
Antiguo 31/10/2018, 10:55
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Contabilizar registros, segun condicion en el mismo <tr>

Primero necesitas obtener un arreglo a partir de los valores de las celdas. Una vez hecho esto, debes recorrer el conjunto resultante y, con ayuda de un objeto literal, ir añadiendo los valores como índices y contándolos en cada ocasión que se repitan. Si un valor evaluado no existe como índice del objeto, se lo añade como tal y se inicia su cuenta en 1, caso contrario, se le suma 1.

Código Javascript:
Ver original
  1. var arreglo = $.map($("td"), function(td){
  2.     return td.textContent;
  3. });
  4.  
  5. for (var i = 0, l = arreglo.length, palabras = {}; i < l; i++){
  6.     palabras[arreglo[i]] = palabras[arreglo[i]] ? ++palabras[arreglo[i]] : 1;
  7. }
  8.  
  9. console.log(palabras);
  10. console.log("Verde = " + palabras["verde"]);

El resultado será:

Código Console:
Ver original
  1. {rojo: 2, circulo: 2, verde: 3, triangulo: 2, cuadrado: 1}
  2. Verde = 3

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 01/11/2018, 17:49
 
Fecha de Ingreso: septiembre-2007
Mensajes: 150
Antigüedad: 17 años, 2 meses
Puntos: 1
Respuesta: Contabilizar registros, segun condicion en el mismo <tr>

Entiendo, lo único malo que así solo veré un recuento general de cuantos objetos literales existen en la tabla, pero lo ideal seria solo hacer un recuento de los que cumplen con la condicion "verde", que para la tabla de ejemplo seria:
Código HTML:
circulo=1, triangulo=2, cuadrado =0
  #4 (permalink)  
Antiguo 01/11/2018, 18:56
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 4 meses
Puntos: 263
Respuesta: Contabilizar registros, segun condicion en el mismo <tr>

podrias probar asi:

Código Javascript:
Ver original
  1. var td = $.map($("td"), function(td){
  2.     return td.textContent;
  3. });
  4.  
  5. var valor = "verde";
  6. salida = new Object()
  7.  
  8. for (var i = 0; i < td.length; i++){
  9.     if(td[i]==valor){
  10.         if( salida.hasOwnProperty(td[i+1])==false ){
  11.             salida[td[i+1]] = 1
  12.         }else{
  13.             salida[td[i+1]] = salida[td[i+1]] + 1
  14.         }
  15.     }
  16. }

aunque no es elegante y no integra el cuadrado
__________________
[email protected]
HITCEL
  #5 (permalink)  
Antiguo 01/11/2018, 19:32
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 4 meses
Puntos: 263
Respuesta: Contabilizar registros, segun condicion en el mismo <tr>

Tambien esta esta que es mucho menos elegante y que al final dependera que no cambien factores comop que las palabras no tengan espacios

Código Javascript:
Ver original
  1. var sale = [];
  2.  
  3. $("table tr").each(function(e){
  4.  
  5.     var tr = $(this)[0].textContent.replace(/(\r\n\t|\n|\r\t)/gm,"").trim();
  6.     var t = tr.split(" ")
  7.    
  8.     if(t[0] != "verde"){
  9.         sale[t[9]] = 0;
  10.     }else{
  11.         if(sale.hasOwnProperty(t[9])==false){
  12.             sale[t[9]] = 1;
  13.         }else{
  14.             sale[t[9]] = sale[t[9]] + 1
  15.         }
  16.     }
  17.  
  18. })
  19. console.log(sale)
__________________
[email protected]
HITCEL
  #6 (permalink)  
Antiguo 01/11/2018, 19:47
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Contabilizar registros, segun condicion en el mismo <tr>

Cita:
Iniciado por alexisfch Ver Mensaje
[...] pero lo ideal seria solo hacer un recuento de los que cumplen con la condicion "verde", que para la tabla de ejemplo seria:
Código HTML:
circulo=1, triangulo=2, cuadrado =0
Fíjate nuevamente en el código que escribí. Imprimí, primero, la lista completa, y, después, la cantidad de veces que se encuentra la palabra "verde" en las celdas de la tabla.

Esta línea:

Código Javascript:
Ver original
  1. console.log("Verde = " + palabras["verde"]);

Y si quieres ver el resultado en un elemento HTML:

Código Javascript:
Ver original
  1. document.querySelector("#idDelElemento").textContent = "Verde = " + palabras["verde"];

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 01/11/2018, 20:26
 
Fecha de Ingreso: septiembre-2007
Mensajes: 150
Antigüedad: 17 años, 2 meses
Puntos: 1
Respuesta: Contabilizar registros, segun condicion en el mismo <tr>

Cita:
Iniciado por Alexis88 Ver Mensaje
Fíjate nuevamente en el código que escribí...
Es que tal vez no me expresé muy bien, pero no deseo saber cuanto "verde" hay

si te fijas la tabla tiene 2 columnas, una de ella es o "verde" o "rojo" y la segunda columna son las figuras (circulo, triangulo, cuadrado), la idea es contabilizar solo las que cumplan en la primera columna la condición "verde"
  #8 (permalink)  
Antiguo 01/11/2018, 21:19
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 4 meses
Puntos: 263
Respuesta: Contabilizar registros, segun condicion en el mismo <tr>

Cita:
Iniciado por alexisfch Ver Mensaje
Es que tal vez no me expresé muy bien, pero no deseo saber cuanto "verde" hay

si te fijas la tabla tiene 2 columnas, una de ella es o "verde" o "rojo" y la segunda columna son las figuras (circulo, triangulo, cuadrado), la idea es contabilizar solo las que cumplan en la primera columna la condición "verde"
Prueba los 2 codigos que te deje a ver cual te sirve o modificas
__________________
[email protected]
HITCEL
  #9 (permalink)  
Antiguo 01/11/2018, 21:37
 
Fecha de Ingreso: septiembre-2007
Mensajes: 150
Antigüedad: 17 años, 2 meses
Puntos: 1
Respuesta: Contabilizar registros, segun condicion en el mismo <tr>

Cita:
Iniciado por xfxstudios Ver Mensaje
Prueba los 2 codigos que te deje a ver cual te sirve o modificas
Si, me funciona, para imprimirlo en html como podria hacerlo???

Código HTML:
<div id="probando" ></div>
document.querySelector("#probando").textContent = salida;
  #10 (permalink)  
Antiguo 01/11/2018, 22:10
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 4 meses
Puntos: 263
Respuesta: Contabilizar registros, segun condicion en el mismo <tr>

en el segundo codigo hay una variable que se llama sale, es un objeto, ya alli lo recorres y e imprimes los resultados en el html
__________________
[email protected]
HITCEL
  #11 (permalink)  
Antiguo 02/11/2018, 01:29
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Contabilizar registros, segun condicion en el mismo <tr>

Cita:
Iniciado por alexisfch Ver Mensaje
Es que tal vez no me expresé muy bien, pero no deseo saber cuanto "verde" hay

si te fijas la tabla tiene 2 columnas, una de ella es o "verde" o "rojo" y la segunda columna son las figuras (circulo, triangulo, cuadrado), la idea es contabilizar solo las que cumplan en la primera columna la condición "verde"
Ya veo. En ese caso, solo habría que hacer una ligera modificación, verificando si la celda es la primera de la fila para así contabilizar el contenido.

Código Javascript:
Ver original
  1. var arreglo = $.map($("td"), function(td){
  2.     if ($(td).parent().find("td").index(td) === 0){
  3.         return td.textContent;
  4.     }    
  5. });
  6.  
  7. for (var i = 0, l = arreglo.length, palabras = {}; i < l; i++){
  8.     palabras[arreglo[i]] = palabras[arreglo[i]] ? ++palabras[arreglo[i]] : 1;
  9. }
  10.  
  11. $("#idDelElemento").text("Verde = " + palabras["verde"]); //Verde = 3

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: contabilizar, registros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:28.