2011-03-02 24 views
5

JavaScript veya jQuery, dizini, başka bir dizide belirli bir değerin konumuna eşit olan bir dizinin öğesini döndüren bir işleve sahip midir? Standart kütüphanede um ...JavaScript veya jQuery'nin Excel'in VLOOKUP'una benzer bir işlevi var mı?

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

Ama: (ben kendi yazabilirsiniz, ama tekerleği yeniden icat etmek istemiyoruz.) gibi

şey.

+0

Örneğiniz şunun gibi görünmüyor [tipik vlookup kullanımı ] (http://www.techonthenet.com/excel/formulas/vlookup.php), ama kendiniz kodlamada neyin var? –

+0

Kodlayamayacağım bir şeyi kodlamayı sevmiyorum. Böyle özensiz bir aptalım, tercih ederim gerçekten tasarlanmış/test edilmiş standart kütüphaneleri kullanarak. – pyon

cevap

4

Bunun gibi bir şey mi? Eğer bir çift dizinin karşı kullanabiliriz Sonra

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; 
} 

,

like so amacınızı bağlı olarak, karşılaştırma " "foo" vs ile başarısız olmaz bu yüzden küçük harf ilk ikisi dizeleri yapmak için indexOf değiştirebilir FOO". Ayrıca, index satırın uzunluğunu aşarsa, satırın tamamı döndürülür (bu, : row); bölümünü değiştirerek ilk öğeye (veya her neyse) kolayca değiştirilebilir.)

İlgili konular