Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Sortowanie tablicy w javascript
Forum PHP.pl > Forum > Przedszkole
fiasko
Chcę posortować tablicę asocjacyjną od najmniejszej wartości do największej nie zmieniając dla danej wartości indeksu danego klucza. To w PHP robi natsort .

Jak zrobić to samo w javascript ? Zwykłe sort zmienia indeksy klucza .

tablica do posortowania :

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


oczekiwany wynik w takiej kolejności :



Kod
Array(
[2] => 45 ,
[13] => 45 ,
[0] => 5 ,
[34] => 5 ,
[3] => 15 ,
[5] => 15 );
pmir13
Możesz objaśnić w jaki sposób ten oczekiwany wynik jest posortowany? Bo wygląda na mocno losową kolejność.
fiasko
To jest posortowane po wartości, a potem po kluczu. Kolejność klucza nie gra dla mnie roli. Ważne, że klucz z wartością stanowią parę. Zwykłe sort się nie nadaje, bo zmienia kolejność wartości klucza i ustala ją od zera. na koniec odwracam kolejność indeksów i mam wartości od największej do najmierniejszej.
kamil4u
http://phpjs.org/functions/natsort:478 ?
fiasko
Fajnie ale jak ściągnąłem tą funkcję to okazało się że żeby działała potrzebuje on innej funkcji, która to z kolei też potrzebuje innych funkcji . No to ściągnąłem jakiś pakiet php.full.commonjs.min.js który ma 368 kB . Pakiet niestety ma jakieś błędy sam w sobie.

wNogachSpisz
Eh, gubisz się w najprostszych czynnościach, nie będzie z Ciebie wymiatacza.

http://phpjs.org/functions/natsort:478
Kod
depends on: strnatcmp


http://phpjs.org/functions/strnatcmp:541
Kod
depends on: strcmp


http://phpjs.org/functions/strcmp:533


Łącznie potrzebujesz trzech funkcji. Całego pakietu php.js nie instaluj, bo będą się działy bardzo nieprzyjemne rzeczy.
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.