
Funciones útiles en JavaScript 27.FEB.14

Cuando era programador de AS3 tenia una serie de librerías que solían ser un salvavidas para resolver problemas comunes y simples como manipular Strings, Números, cargar y manipular Archivos XML entre algunas cosas más, este tipo de practicas nos permite reutilizar código.
En JavaScript es un poco más difícil mantener nuestras librerías en algún archivo de utilidades ya que debemos considerar el peso y hay momentos en los que no es bueno para nosotros cargar un archivo con 30 funciones para manipular Strings cuando solo vamos a usar 3.
De todas formas es bueno tener pequeños snipets de código que nos ayuden a acelerar el trabajo y por eso quiero compartir algunos.
La primera nos permite colocar la primera letra de un String en Mayúscula.
function ucfirst(string) { return string.charAt(0).toUpperCase() + string.slice(1); }
La siguiente es muy útil, provees un objeto, una clave y un valor y te devuelve el o los objetos que coincidan con ese arreglo de clave y valor.
function searchObjects(obj, key, val) { var objects = []; for (var i in obj) { if (typeof obj[i] == 'object') { objects = objects.concat(searchObjects(obj[i], key, val)); } else if (i == key && obj[key] == val) { objects.push(obj); } } return objects; }
La siguiente es similar a la anterior pero retorna el índice del objeto en el arreglo que coincide con el id pasado como parámetro.
function getObjectIndexFromId(obj, id) { if (typeof obj == "object") { for (var i = 0; i < obj.length; i++) { if (typeof obj[i] != "undefined" && typeof obj[i].id != "undefined" && obj[i].id == id) { return i; } } } return false; }
La siguiente función compara el contenido de dos objetos para ver si son iguales, no es muy común hacer esto pero puedes usarlo para saber si se ha hecho algún cambio en un formulario antes de salvarlo, no se si sea un método muy usado aunque igual lo dejo por aquí.
function compareObjects(obj1, obj2) { for (var param in obj1) { if (typeof obj1[param] == 'object' && obj1[param] !== null) { // Si la longitud es diferente no hay nada que revisar if (typeof obj2[param] != "undefined" && obj1[param].length != obj2[param].length) { return false; } // Si hay algún cambio entonces tampoco debemos // continuar buscando en el resto del objeto if (compareObjects(obj1[param], obj2[param]) === true) return false; } else { // ignora el parametro $$hashKey if (param != "$$hashKey") { // Si los valores son diferentes no hay nada más que buscar if (obj1[param] != obj2[param]) { return false; } } } } // Una vez que se revisa todo su no hay diferencia // retornamos true indicando que son iguales. return true; }
Finalmente esta función convierte las fechas devueltas por mysql y las convierte a objetos tipo Date en JavaScript .
function mysqlDateTimeToJSDate(datetime) { var t = datetime.split(/[- :]/); return new Date(t[0], t[1]-1, t[2], t[3], t[4], t[5]); }
Si tienes alguna otra función que pueda ser util para la comunidad no dudes en compartirla con nosotros.
Update: El amigo Adnan Tavárez comparte con nosotros esta función para llevar un String con números a un formato con monedas.
function toCurrency($numero) { // 100000 -> 100,000 if( $numero !== null ) return $numero.replace(/\B(?=(\d{3})+(?!\d))/g, ","); else return $numero; }
Alvaro José Rios Ch