Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - ceiboart

Páginas: [1]
1
JavaScript / [duda] ordenar un array con claves repetidas
« en: 31 de Marzo de 2013, 23:57:49 pm »
Hola
Tengo una duda con un ejercicio
Debo ordenar un array de objetos similar a este:
A =[{color:’rojo’, class:9},
   {color:'azul', class:2},
   {color:'amarillo', class:5},
   {color:'verde', class:9}
   ];
Dicho array podría tener una longitud mayor, pero lo acorte un poco
Ahora les presento el problema:
a: debo crear un nuevo array donde los elementos estén ordenados de forma descendente según la propiedad class de cada miembro
b: debo listarlos en consola (como dije en orden descendente)
la cuestión está en que la propiedad class puede tener valores repetidos
las keys resultantes no deben ser necesariamente los valores de los atributos class, por lo que pensé en algo como lo siguiente:
Código: [Seleccionar]
<html>
<head>
<script type="text/javascript">
arrayOriginal = [{color:'rojo', class:9},
{color:'rojo', class:9},
{color:'azul', class:2},
{color:'amarillo', class:5},
{color:'verde', class:9}
];
nuevoArray = []; //aquí irá el array ordenado
totalEsperados = arrayOriginal.length;
copiados = 0; //cantidad de elementos copiados hasta el momento
while(copiados < totalEsperados) //mientras que la cantidad de copiados sea inferior a los esperados continuar
{
if (!nuevoArray[arrayOriginal[copiados].class])
{
//comprobamos si un elemento cuya key sea igual al atributo class existe o no
//si no existe lo creamos
nuevoArray[arrayOriginal[copiados].class] = arrayOriginal[copiados];
copiados++; //incrementamos la cantidad de copiados
continue; //siguiente buelta
}
else
{
/*si el elemento ya existía tenemos un problema. las keys no pueden repetirse, por los que
el nuevo elemento a añadir tendrá números con coma flotante*/
console.log('elemento ya existia, se creara otro en su lugar');
indice = 0;
while(true) //parece un bucle infinito, pero es seguro que algún día se detendrá XD
{
/*tenía un problema al tratar de usar decimales, así que pase todo a string y luego lo volví
a convertir en float*/
ToString = parseFloat(arrayOriginal[copiados].class.toString() + '.' + indice);
if (!nuevoArray[ToString])
{
//si no existe el elemento, lo copiamos, incrementamos el valor de "copiados" y finalizamos el bucle
nuevoArray[ToString] = arrayOriginal[copiados];
console.log('creado elemento ' + nuevoArray[ToString].class);
copiados++;
break;
}
else
{
/*si ya existía, pues incrementamos el índice y seguimos con la ejecución de este while
hay que recordar que puede haber muchos atributos class repetidos*/
indice++;
continue;
}
}
}
}//el bucle termino :D
nuevoArray.forEach(listar);//aquí comienza el rollo
function listar(element,id,array)
{
console.log ( id + '=>' + element);//en teoría debería listar uno a uno los elementos, pero no es así D:
}
//lo de abajo si funciona :D
for (var INDICE in nuevoArray)
{
console.log ( INDICE + '=>' + nuevoArray[INDICE]);
}
console.log(nuevoArray);
//mostramos todo los elementos para verificar si salió bien
</script>
</head>
<body>
</body>
</html>

el código funciona casi perfecto, pero el forEach no me itera sobre los elementos cuyas claves
Sean de tipo float
no obstante, si hago un console.log(nuevoArray) allí están todos los elementos en perfecto orden
Con For (x in y) funciona perfecto
Pero bueno, la pregunta es
existe alguna forma más simple de hacer esto (lo de ordenar el array)?
Espero sus comentarios

2
PHP / [opiniones?]¿Qué es más rápido? Include o fopen& fgets?
« en: 04 de Marzo de 2013, 01:55:10 am »
Hola
Estoy tratando de quitarme esta duda que me surgió al plantearme un simple sistema de plantillas
No es que no me gusten los que ya andan por allí, sino porque simplemente me daba curiosidad el tema y quiero aprender. En fin…
Por la web encontré varios tutoriales de programadores experimentados  (y no copipasteros XD) en los que suelen proponer la apertura de un fichero y reemplazar ciertas ocurrencias de dicho fichero por los valores almacenados previamente. Algo así :
Abrir fichero
Leer  fichero y guardar en una variable
Reemplazar ocurrencia X por el valor de $X
Imprimir en pantalla
Otra forma que proponen es hacer un include que ya contenga nombres de variables que el programador definirá antes del include. Algo así
<?php
$X = ‘hello word’;
Include  ‘template.php’;
?>
//y el archivo template.php…
<html…
<body>
<?= $X ?>
</body>
</html>
La duda que me surge es cuál de los 2 métodos tendrá un mayor rendimiento
Tomando en cuenta que en el primero (si bien es más transparente para el diseñador) cargamos un archivo en memoria, reemplazamos valores del mismo por valores de variables (que a su vez son una carga más en memoria) e imprimimos los resultados
En cambio en el segundo (que es menos transparente) debemos simplemente definir las variables a usarse e incluir el archivo
A simple vista me parecía más sencillo, pero pensándolo mejor, el fichero a incluir deberá ser interpretado como un script (además de ser cargado en memoria)
Una ventaja de esto es que si contamos con un optimizador (como APC) los tiempos de procesamiento serían menores si ya se cuenta con un cache del template.php, pero no siempre se cuenta con algo como APC en el server :(
Bueno. No sé si se entendió. Yo quería saber sus opiniones XD

3
PHP / Problema con .htaccess
« en: 03 de Febrero de 2013, 18:07:57 pm »
Hola
En primer lugar no se si este mensaje debería ubicarlo en este foro, pero no encontré (o no vi) uno de apache
En fin. Estoy tratando de reescribir las urls con el fichero htaccess, tal cual lo hago en Windows (wamp Server), pero en Linux
Con wamp todo funciona perfecto, pero en ubuntu (11.04) esto no funciona :(
Tengo el mod_rewrite activado, y también cambie las configuraciones del virtual host tal como aparece EN TODOS los tutoriales que enseñan como hacerlo (ejemplo http://sonidolibre.wordpress.com/2008/04/18/activar-mod_rewrite-de-apache2-en-ubuntu/)
Incluso en la desesperación pase todo lo que estaba en None a All, pero nada funciona
Ahora que lo pienso debería ser tal ves algún otro fichero de configuración el que tendría que probar, (tal ves alguna en apace2.conf) pero no tengo idea de cual
Por cierto, debo decir que no uso xamp en ubuntu, sino las versiones oficiales (apache 2.21.2…)
La regla que uso es parecida la siguiente:
RewriteEngine on
Rewriterule ^(.*)/(.*)$ $1.php?var=$2
Dicha regla funciona en wamp, pero no en ubuntu. Todo lo que consigo es un error 404
Espero sus comentarios

4
Hola comunidad. Me presento, soy nuevo :p
Tengo un problema con un javascipt. Para abreviar se los muestro:

Código: [Seleccionar]
window.onload= function(){
    var valores
    var elemento
    for (i=1; i<= 10; i++){
   elemento = document.getElementById(i).onclick = function () {
     valores = elemento.value
     alert("hola " + valores);
   }
  }
}
Se supone que  en el bucle se accede a todos los input button de un formulario (por medio de un atributo id numérico), recorriéndolos uno a uno. A cada elemento input type button se le asigna una función anónima que se ejecutara al hacer clic, mostrando el mensaje “hola “ mas el valor del atributo “value” (un numero), pero al correr el scipt me devuelve “hola undefinet”
¿alguien sabe como puedo hacer para solucionarlo?
Posdata: el script original era de una calculadora que arme para poder entender mejor como asignar eventos y funciones a los elementos html.
Llamando a funciones directamente desde los elementos no tengo problemas, pero se supone que esto es algo que debo evitar. Gracias por su atención

Páginas: [1]