[JavaScript] Pierwszy element w tablicy asocjacyjnej (obiekcie) |
[JavaScript] Pierwszy element w tablicy asocjacyjnej (obiekcie) |
6.10.2012, 09:43:36
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) |
Witam
Jak wyciągnąć pierwszy element w obiekcie nie znając nazwy klucza?
Mam tylko coś takieg:
Ale coś mi podposiada że da się lepiej... |
|
|
6.10.2012, 10:12:02
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%) |
To JS, nie doczytałem, sorry. Ten post edytował b4rt3kk 6.10.2012, 10:13:18 -------------------- Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
|
|
|
6.10.2012, 11:58:52
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) |
To się robi za pomocą pętli, czy tak jak pokazałeś, ale warto dodać jeszcze warunek z hasOwnProperty, aby mieć pewność, że nie dostaniesz, żadnego śmiecia.
-------------------- |
|
|
6.10.2012, 14:27:44
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) |
Jak w tym przypadku prawidłowo użyć "hasOwnProperty" ?
|
|
|
6.10.2012, 14:42:04
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) |
Tak jak w dokumentacji:
W google: "hasOwnPropert mdc" -> https://developer.mozilla.org/en-US/docs/Ja.../hasOwnProperty na dole przykład z pętlą for in. Z tym, że Ciebie nie obchodzi to co jest w else. Ten post edytował kamil4u 6.10.2012, 14:42:55 -------------------- |
|
|
6.10.2012, 14:57:00
Post
#6
|
|
Grupa: Zarejestrowani Postów: 374 Pomógł: 79 Dołączył: 6.04.2010 Skąd: Ostrów Wielkopolski Ostrzeżenie: (0%) |
Jak wyciągnąć pierwszy element w obiekcie nie znając nazwy klucza? Pętlą for...in. Rozpocznij iterację, zapisz wartość do zmiennej i przerwij iterowanie:
Pamiętaj, że właściwości obiektów nie są przechowywane w uporządkowanej kolejności i każda manipulacja właściwościami może potencjalnie zmienić ich kolejność. Kilka linijek kodu dalej, powyższa pętla może zwrócić inny wynik. Ten post edytował bostaf 6.10.2012, 14:57:39 |
|
|
6.10.2012, 15:38:06
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) |
Hm, a może lepiej:
Bo jaki inny śmieć niz prototypiasta funkcja może się pojawić? Pamiętaj, że właściwości obiektów nie są przechowywane w uporządkowanej kolejności i każda manipulacja właściwościami może potencjalnie zmienić ich kolejność. Kilka linijek kodu dalej, powyższa pętla może zwrócić inny wynik. Luzik, chwilę wcześniej przeprowadzam sortowanie. Ten post edytował wNogachSpisz 6.10.2012, 15:38:47 |
|
|
6.10.2012, 15:54:04
Post
#8
|
|
Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) |
Nie jest lepiej. Użyj normalne hasOwnPropert.
Wystarczy, że w danych będziesz chciał kiedyś w przyszłości umieścić jakąś funkcję, to nie będziesz wiedział dlaczego to nie działa. Robi się to w sposób, który Ci napisałem to nie będziesz miał nigdy problemu z tą funkcją - nie wiem czemu się uparłeś, że chcesz inaczej -------------------- |
|
|
6.10.2012, 16:50:32
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) |
Nie uparłem, się, po prostu pytam.
Mylisz się, jeśi umieszcze funkcję, to nadal będzie działać prawidłowo.. Uzasadnij dlaczego tak nie jest lepiej. //edit Hmm, hasOwnProperty true jeżeli natrafi na funkcje.. Ten post edytował wNogachSpisz 6.10.2012, 16:57:26 |
|
|
6.10.2012, 17:14:32
Post
#10
|
|
Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) |
Cytat Mylisz się, jeśi umieszcze funkcję, to nadal będzie działać prawidłowo.. Nie. Nie mylę się: Kod <script> var test1 = function( object ) { for ( var key in object ) { if ( 'function' !== typeof object[ key ] ) { return object[ key ] } } } var test2 = function( object ) { for ( var key in object ) { if ( object.hasOwnProperty( key ) ) { return object[ key ] } } } var obj = { 'funkcja': function(){ /*kod*/}, 'string': 'ala ma kota' } alert( test1(obj) ); alert( test2(obj) ); </script> Jak widać funkcja z hasOwnProperty zwraca pierwszy element, który jest funkcją. Generalnie w ogóle nie musiałbyś zmieniać swojej funkcji z pierwszego postu, ale na pewno takie zabezpieczenie się nie zaszkodzi, jak przypadkowo wrzucisz jakieś inne dane. Ten post edytował kamil4u 6.10.2012, 17:15:10 -------------------- |
|
|
7.10.2012, 11:38:06
Post
#11
|
|
Grupa: Zarejestrowani Postów: 589 Pomógł: 91 Dołączył: 22.05.2008 Skąd: Gliwice Ostrzeżenie: (0%) |
Zależy co robisz ale generalnie nie polegaj na kolejności elementów w obiekcie... Do tego jest tablica.
Przeczytaj http://frontend.pl/2010/03/kolejnosc-wlasc...ci-w-obiektach/ -------------------- Moja gra - scraby.io
|
|
|
7.10.2012, 11:58:57
Post
#12
|
|
Grupa: Zarejestrowani Postów: 374 Pomógł: 79 Dołączył: 6.04.2010 Skąd: Ostrów Wielkopolski Ostrzeżenie: (0%) |
Zależy co robisz ale generalnie nie polegaj na kolejności elementów w obiekcie... Do tego jest tablica. Przeczytaj http://frontend.pl/2010/03/kolejnosc-wlasc...ci-w-obiektach/ Fajny eksperyment. Potwierdza to co jest napisane w dokumentacji:
|
|
|
7.10.2012, 12:25:30
Post
#13
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) |
-------------------- Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta). |
|
|
Wersja Lo-Fi | Aktualny czas: 27.04.2024 - 08:07 |