Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Szukanie indeksu po wartości
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Glarden
Czy jest w js możliwość odzyskania indeksu elementu tablicy po jego wartości? Np., mam wartość 'wiatrak' i tablicę:
co[0] = 'domek';
co[1] = 'wiatrak';
Chciałbym, żeby w takim wypadku zwróciło mi 1. Jest to możliwe?
ARJ
wystarczy odpalić manual i wpisać array. na liście funkcji związanych z tablicami znajduje się http://pl2.php.net/manual/pl/function.array-search.php
wystarczy zaglądnąć w manual!
mike
~ARJ to teraz raz jeszcze popatrz w jakim dziale odpisujesz.
Głupio Ci teraz po takim wymądrzaniu się, co? tongue.gif

~Glarden Array:indexOf
ARJ
Cytat(mike @ 23.06.2007, 21:49:29 ) *
~ARJ to teraz raz jeszcze popatrz w jakim dziale odpisujesz.
Głupio Ci teraz po takim wymądrzaniu się, co? tongue.gif

true, true...
przepraszam ale zobaczyłem pytanie i nie popatrzyłem na dział smile.gif
Norbas
@mike Rozwiązanie, które podałeś działa w przeglądarkach opartych na Gecko
Odnośnie tematu, to poniższa funkcja powinna działać niezależnie od tego czy indeksy tablicy są numeryczne czy łańcuchowe:
Kod
function find_index(t, v){
  for(var k in t)
    if(t[k]==v)
      return k
  return null
}

Jeżeli elementy tablicy ustawiasz sam, indeksy są od zera i są wstawiane kolejno, to można zastosować:
Kod
function find_index(t, v){
  for(var i=0,n=t.length;i<n;++i)
    if(t[i]==v)
      return i
  return null
}

W obu przypadkach zwrócona wartość null oznacza, że nie znaleziono indeksu. Pierwszy parametr to tablica, a drugi to wartość elementu tablicy
mike
~Norbas masz rację. Nie zwróciłem na to uwagi.

Ale w związku z tym, że JavaScript to bardzo elastyczny język, w którym można zmienić prototyp klasy (dowolnej, nawet przedefiniowanej) poronuję takie rozwiązanie:

Kod
if (!Array.indexOf) {
    Array.prototype.indexOf = function(obj) {
        for (var i=0; i<this.length; i++) {
            if (this[i] == obj) {
                return i;
            }
        }
        return -1;
    }
}

Po czymś takim IE też będzie obsługiwało indexOf() na obiekcie Array
Glarden
Dziękuję Wam wszystkim, działa! Powiedziałbym, że jesteście kochani, ale jesteście facetami:P
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.