Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript] Max z tablicy asocjacyjnej, jak policzyć ?
fiasko
post 14.02.2012, 18:59:06
Post #1





Grupa: Zarejestrowani
Postów: 243
Pomógł: 1
Dołączył: 1.06.2010

Ostrzeżenie: (0%)
-----


Mam pytanie jak policzyć wartość maksymalną z takiej tablicy w javascript ?

zwykła tablica to wiem smile.gif
[JAVASCRIPT] pobierz, plaintext
  1.  
  2. var dane = new Array(23,45,67);
  3.  
  4. alert(Math.max.apply( Math, dane ));
[JAVASCRIPT] pobierz, plaintext

ale potrzebuję ustalić index klucza z najwyższą wartością z tej tablicy poniżej.

[JAVASCRIPT] pobierz, plaintext
  1.  
  2. var dane = new Array();
  3.  
  4. dane[0] = 5 ;
  5. dane[3] = 15 ;
  6. dane[2] = 45 ;
  7. dane[34] = 5 ;
  8. dane[5] = 15 ;
  9. dane[13] = 45 ;
[JAVASCRIPT] pobierz, plaintext






Go to the top of the page
+Quote Post
droslaw
post 14.02.2012, 20:33:58
Post #2





Grupa: Zarejestrowani
Postów: 98
Pomógł: 33
Dołączył: 10.05.2011
Skąd: Krak

Ostrzeżenie: (0%)
-----


Taka metoda zwróci pierwszy index pod, którym leży najwyższa wartość:
Kod
Array.prototype.maxItemKey = function()
{
    var value; // Największa wartość.
    var key; // Klucz majwiększej wartości.
    for(var x in this)
    {
        if(this.hasOwnProperty(x)) // Dzięki temu funckja nie będzie brała pod uwagę m.in. własności maxItemKey, która teraz należy do prototypu Array.
            if(key == undefined || this[x] > value)
            {
                value = this[x];
                key = x;
            }
    }
    return key;
}

efektem tego kodu:
Kod
var dane = [];
dane[0] = 5;
dane[3] = 15;
dane[2] = 45;
dane[34] = 5;
dane[5] = 15;
dane[13] = 45;
alert(dane.maxItemKey());

Będzie okienko z liczbą 2.
Go to the top of the page
+Quote Post
fiasko
post 14.02.2012, 21:37:00
Post #3





Grupa: Zarejestrowani
Postów: 243
Pomógł: 1
Dołączył: 1.06.2010

Ostrzeżenie: (0%)
-----


Niestety ale ta biblioteka prototype mi się gryzie z moim kodem i z jquery sad.gif .

Potrzebuję rozwiązania w czystym JavaScript lub jquery.
Go to the top of the page
+Quote Post
kamil4u
post 14.02.2012, 21:54:43
Post #4





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


To nie jest biblioteka prototype - tylko czysty JS:)

Poczytaj co robi prototype w tym kodzie. Niestety twórcy jednego z popularnych framework-ów, niefortunnie użyli tej nazwy i to myli początkujących programistów JS.


--------------------
Go to the top of the page
+Quote Post
droslaw
post 14.02.2012, 22:39:21
Post #5





Grupa: Zarejestrowani
Postów: 98
Pomógł: 33
Dołączył: 10.05.2011
Skąd: Krak

Ostrzeżenie: (0%)
-----


Można też napisać zwykłą funkcję:
Kod
function maxValueKey(arr)
{
    var value; // Największa wartość.
    var key; // Klucz majwiększej wartości.
    for(var x in arr)
    {
        if(arr.hasOwnProperty(x))
            if(key == undefined || arr[x] > value)
            {
                value = arr[x];
                key = x;
            }
    }
    return key;
}


Poprzednia wersja jest o wiele wygodniejsza i byłoby lepiej gdyby można było ją zatosować. Masz jakieś komunikaty mówiące o tym w czym konkretnie przeszkadza metoda, którą podałem w pierwszym poście?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 04:28