[Duda] Javascript

raid

HOla,

Tengo un fichero con un array de objetos creado parecido a esta forma (se crea dinámicamente con php):

mElem[0] = new libro(
	{
	    title: "La cena de los idiotas",
	    categorias:["humor"]
	});

mElem[1] = new libro(
	{
	    title: "La cenicienta",
	    categorias:["disney","cuentos","clásicos"]
	});

A partir de aqui, me gustaría construir un listado con todas las categorías existentes (sin repetirlas), y luego, al clicar en cada una de ellas, que se pudiera activar o desactivar la visualización de aquellos de esa categoría.

function cambiaVisualizacion(cat){
	recorrer mElem
		recorrer mElem[i].categorias
			if (mElem[i].categorias[j] == cat ){
				if (mElem[i].getVisible()==false)
					mElem[i].setVisible(true);
				else
					mElem[i].setVisible(false);	
			}
		}
	}
}

El problema es que si un libro está por ejemplo dentro de las categorias comic y humor, y yo desactivo humor, este libro deberá seguir viéndose, ya que la categoría comic estaría activa. solo debería ocultarse cuando las dos categorías de este libro estuvieran desactivadas.

Yo creo que así está mal enfocado. Cómo creeis que debería hacerlo? Estoy pensando en que todos estuvieran desactivados en un principio y que en los bucles se vayan activando. Vaya, que es lunes y el cerebro aún no me funciona.

Alguien que me pueda ayudar a aclarar las ideas?

Fastestwat

#1 Si como máximo tienes 2 categorías por libro con un && en el primer if apuntando a 0 y 1 en el array de categorías te tendría que valer.

1 respuesta
raid

#2 No, las categorías por cada libro son n
(lo cambio en el codigo que he puesto)

ciscochus

#1 yo lo plantearía de otra forma.

elemento = {
    title: "La cena de los idiotas",
    categorias: [
        { titulo_categoria: "europea", visible: 0, },
        { titulo_categoria: "humor", visible: 0, }],
};

así puedes controlar el valor de visibilidad de cada categoría

raid

Bueno, tendría que cambiar muchas cosas cuando se genera ese Array de elementos, pero además..

Si en el menú, paso humor a visible = 1, tendría que mirar en todo el array donde titulo_categoría: humor para poner visible =1 en esos elementos?

NO está mal, pero el problema es que el array de categorías me viene generado así:

["disney","cuentos","clásicos"]

Sería dificil de cambiar eso. Es que viene de un registro de base de datos.

Mmm.. no sé. El caso es que me estoy haciendo la picha un lío con esta tontería. Joder, sé que no es dificil de resolver, pero me he quedado atascado.

1 respuesta
ciscochus

#5 Pues en ese caso puedes hacerlo así

elemento = {
    title: "La cena de los idiotas",
    categorias: {
        "europea": 0,
        "humor": 0
    }
};

PD: soy noob en javascript, así que acepto golpes de remo e invito a todo el que domine a poner una solución más optima

Usuarios habituales

  • ciscochus
  • raid
  • Fastestwat