19/09/2009, 05:49
|
| Javascripter | | Fecha de Ingreso: abril-2009 Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 9 meses Puntos: 1485 | |
Respuesta: Contar número de elementos repetidos en array hola Adler, Cita: var serialize = "", prefix = prefix || ", ", infix = infix || ":", sufix = sufix || ""; en esa linea mas bien se define una serie de variables, especificamente cuatro. no se cual es exactamente la parte que te desorienta pero aqui va. esa linea es el equivalente de...
Código:
var serialize = "";
var prefix = prefix || ", ";
var infix = infix || ":";
var sufix = sufix || "";
la coma(,) tiene un uso muy limitado y segun la circunstancia que se aplique tiene significado diferente. por ejemplo en la definicion (o llamada) de funcion es para separar una lista de argumentos, en un bucle for para separar las evaluaciones, y en la definicion de variables para evaluar multiples expresiones. dudo que aqui sea tu duda pero por si acaso.
lo que quizas te sea un poco complejo comprender es la expresion variable || expresion. es una forma util y corta de dar valores predeterminado a los argumentos cuando estos no "poseen" un valor. o sea, la expresion es lo mismo que...
Código:
if(!argumento) argumento = valor_predeterminado;
la parte crucial es que se usa un operador logico llamado OR (||). quizas la confusion es porque acostumbramos a usar operadores logicos dentro de un condicional y se interpreta como ejecutar un bloque de codigo si uno de los argumentos evalua a cierto. sin embargo, fuera de los condicionales los operadores logicos operan un tanto diferente. la forma que opera OR es evaluando el primero argumento. si al evaluar a boolean este resulta ser true, la expresion devuelve el primer argumento. por el contrario, si este primer agumento evalua a false se devuelve el segundo argumento. quizas ahora entiendas porque puse entre comillas la palabra poseen en el parrafo anterior. mas bien cualquier expresion que evalue a false hara que se asigne un valor predeterminado. o sea, si usaramos la funcion pasando como parametros "" (string vacio), false, null, 0 (cero) o undefined se evaluaran como false.
Cita: return serialize.replace(/^, /, ""); esta linea mas bien tiene particular efecto cuando se utiliza los valores predeterminado. el formato predeterminado se compone de prefix, propiedad, infix, valor, sufix, por lo que la cadena comenzaria (como ejemplo) ", 0:8". como proposito estetico pense que no era un formato aceptable que la cadena comenzara con una coma y espacio. por supuesto, tu lo adaptas como mejor te guste. la razon por la que escogi ese formato era para adaptarlo mas al estilo json de modo que si fuera necesario se pueda volver a reconstruir el objeto.
Cita: clean = [].concat(array); // crear copia; probablemente sabras que en javascript no tenemos la habilidad de "punteros" como otros lenguajes PHP, C, entre otros mas. sin embargo, javascript tiene unas normas de cuando crear referencias o copias segun el tipo de valor. tal es el caso de los arrays donde asignando un array, previamente almacenado en variable, a otra variable se crea una referencia a la misma memoria. entre las soluciones de crear copias de array, esta me parece la mas corta y excelente. por tanto, en este caso se crea un array literal con el unico proposito de usar el metodo concat el cual crea una copia de su argumento y devuelve un nuevo array uniendo ambos. pero en este caso, como el array literal esta vacio el resultado es una copia del array pasado como argumento. @edit 07:19
comentario aparte: gracias a ti he adelantado un codigo que hacia tiempo queria escribir, pero como no le heche ganas, no tenia nada hasta el momento. pero sobre todo, gracias a tus dudas mejore el codigo a diferencia de como un principio lo tenia visualizado.
__________________ la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
Última edición por zerokilled; 19/09/2009 a las 08:21
Razón: arreglando terminos
|