2011-03-02 13 views
5

¿JavaScript o jQuery tienen una función que devuelve el elemento de una matriz cuyo índice es igual a la posición de un valor dado en otra matriz? (Podría escribir mi cuenta, pero no quiero que reinventar la rueda.)¿JavaScript o jQuery tienen una función similar a VLOOKUP de Excel?

Algo así como:

function vlookup(theElement, array1, array2) { 
    $.each(array1, function(index, element) { 
     if (element === theElement) 
      return array2[index]; 
    }); 
    return null; 
} 

Pero, um ... en la biblioteca estándar.

+0

Su ejemplo no se parece a [el uso típico de vlookup ] (http://www.techonthenet.com/excel/formulas/vlookup.php), pero ¿qué hay de malo en codificarlo usted mismo? –

+0

No me gusta codificar algo que no podría codificar. Como soy un idiota descuidado, prefiero utilizando bibliotecas estándar realmente diseñadas/probadas. – pyon

Respuesta

4

¿Algo así como esto?

Array.prototype.vlookup = function(needle,index,exactmatch){ 
    index = index || 0; 
    exactmatch = exactmatch || false; 
    for (var i = 0; i < this.length; i++){ 
     var row = this[i]; 

     if ((exactmatch && row[0]===needle) || row[0].toLowerCase().indexOf(needle.toLowerCase()) !== -1) 
      return (index < row.length ? row[index] : row); 
    } 
    return null; 
} 

A continuación, puede usarlo en su contra una doble matriz, like so

En función de su finalidad, se puede modificar el indexOf para hacer ambas cadenas en minúsculas primero lo que la comparación no falla por "fu" vs " FOO ". Tenga en cuenta también que si index supera la longitud de la fila, se devuelve toda la fila (esto puede cambiarse fácilmente al primer elemento (o lo que sea) modificando la parte : row);.

Cuestiones relacionadas