Comprobar si un array contiene un elemento en JavaScript

JavaScript por desgracia no tiene implementados todos los métodos que podemos tener disponibles desde C# o VB.NET. Uno de ellos es el método «Contains» de las listas. Con este código podemos extender la clase «Array» de JavaScript implementando este método:

Array.prototype.contains = function(element) {
    for (var i = 0; i < this.length; i++) {
        if (this[i] == element) {
            return true;
        }
    }
    return false;
}

Calcular el ancho de un texto y acortarlo a un número de pixeles dado en JavaScript

En algún caso podríamos necesitar calcular desde JavaScript cuanto nos va a ocupar un texto en la pantalla.
Para ello haremos uso de una capa que nos hará las veces de regla. Esta capa deberá tener los mismos estilos que el destino del texto que queremos medir, o asignarle estos estilos cada vez que vayamos a medir.

El código HTML de la capa es este:

<span id="ruler"></span>

Para que no se vea esta capa le asignaremos el siguiente CSS:

#ruler {
	visibility: hidden;
	white-space: nowrap;
	position: absolute;
	top: -100;
	left: 0px;
}

Y como último paso extenderemos la clase string de JavaScript con dos métodos que nos permitirán calcular el ancho de un texto en pixeles y recortar un texto a un ancho determinado.

// Calcula los pixeles de ancho que ocupa un texto
String.prototype.visualLength = function() {
    var ruler = document.getElementById("ruler");
    ruler.innerHTML = this;
    return ruler.offsetWidth;
}

// Recorta un texto al número de pixeles indicados, añadiendo un "..." en el caso de haber sido recortado
String.prototype.trimToPx = function(length)
{
    var tmp = this;
    var trimmed = this;
    if (tmp.visualLength() > length)
    {
        trimmed += "...";
        while (trimmed.visualLength() > length)
        {
            tmp = tmp.substring(0, tmp.length-1);
            trimmed = tmp + "...";
        }
    }

    return trimmed;
}

Formatear un número a un número X de decimales en JavaScript

function decimales(Numero, Decimales) {
    var pot = Math.pow(10, Decimales);
    var num = parseInt(Numero * pot) / pot;
    var nume = num.toString().split('.');

    var entero = nume[0];
    var decima = nume[1];

    var fin;
    if (decima != undefined) {
        fin = Decimales - decima.length;
    }
    else {
        decima = '';
        fin = Decimales;
    }

    for (i = 0; i < fin; i++)
        decima += String.fromCharCode(48);

    var buffer = "";
    var marca = entero.length - 1;
    var chars = 1;
    while (marca >= 0) {
        if ((chars % 4) == 0) {
            buffer = "." + buffer;
        }
        buffer = entero.charAt(marca) + buffer;
        marca--;
        chars++;
    }
    if (decima != '')
        num = buffer + ',' + decima;
    else
        num = buffer;
    return num;
}

Obtención de la distancia entre dos coordenadas geográficas en C#

/// <summary>
        /// Obtiene la distancia entre dos coordenadas geográficas
        /// </summary>
        /// <param name="long1InDegrees">Longitud del punto 1 en grados</param>
        /// <param name="lat1InDegrees">Latitud del punto 1 en grados</param>
        /// <param name="long2InDegrees">Longitud del punto 2 en grados</param>
        /// <param name="lat2InDegrees">Latitud del punto 2 en grados</param>
        /// <returns>Distancia entre los dos puntos en metros</returns>
        private static double GetDistance(decimal long1InDegrees, decimal lat1InDegrees, decimal long2InDegrees, decimal lat2InDegrees)
        {
            double lats = (double)(lat1InDegrees - lat2InDegrees);
            double lngs = (double)(long1InDegrees - long2InDegrees);

            //Paso a metros
            double latm = lats * 60 * 1852;
            double lngm = (lngs * Math.Cos((double)lat1InDegrees * Math.PI / 180)) * 60 * 1852;
            double distInMeters = Math.Sqrt(Math.Pow(latm, 2) + Math.Pow(lngm, 2));
            return distInMeters;
        }