Zadejte hledaný výraz...

Jak na řazení záznamů z API, jQuery to vidí jinak

David Musil
verified
rating uzivatele
(69 hodnocení)
4. 6. 2019 13:45:13
Ahoj,
API mi vrací seznam objektů. Když si zobrazím výstup z API, jsou seřazeny správně záznamy za sebou (třeba podle data, názvu, apod.), prostě tak, jak si je na serveru seřadím.
Ale jakmile tyhle data načtu AJAXem na webu a dám pro kontrolu console.log(), tak jsou úplně přeházené.
29171
Před výstupem z API (v PHP) probíhá funkce array_values($data), ale tady dle mého problém není, protože data jsou v poli pořád postupně tak, jak tam byla. A když si opravdu zobrazím výstup z API prohlížeči, tak je pořád řazeno správně.
Lze to pořadí dodržet i tak, abych tam nemusel nechávat index?
4. 6. 2019 13:45:13
https://webtrh.cz/diskuse/jak-na-razeni-zaznamu-z-api-jquery-to-vidi-jinak#reply1404262
Jan Stejskal
verified
rating uzivatele
(7 hodnocení)
4. 6. 2019 13:53:11
Objekt neumí držet pořadí, tzn. pokud je to z nějakého důvodu důležité, je třeba si vracet pole místo objektu. pole pořadí drží.
4. 6. 2019 13:53:11
https://webtrh.cz/diskuse/jak-na-razeni-zaznamu-z-api-jquery-to-vidi-jinak#reply1404261
David Musil
verified
rating uzivatele
(69 hodnocení)
4. 6. 2019 14:13:00
Tak nakonec se ukazuje, že objekt umí držet pořadí. Chybka totiž byla jinde. Problém byl za klávesnicí, když testoval na jiné verzi API...
Nemusím znát přesný index, jen mi stačí to pořadí dat a to se udrží.
4. 6. 2019 14:13:00
https://webtrh.cz/diskuse/jak-na-razeni-zaznamu-z-api-jquery-to-vidi-jinak#reply1404260
Jan Stejskal
verified
rating uzivatele
(7 hodnocení)
4. 6. 2019 14:37:55
Napsal musil.david;1530590
Tak nakonec se ukazuje, že objekt umí držet pořadí. Chybka totiž byla jinde. Problém byl za klávesnicí, když testoval na jiné verzi API...
Nemusím znát přesný index, jen mi stačí to pořadí dat a to se udrží.
Dokumentace: http://www.json.org/ "An object is an unordered set of name/value pairs."
Pro udržení pořadí je nutné použít pole. Nicméně v tom příkladu máte data jako pole, takže ten dotaz mi nedává smysl.
4. 6. 2019 14:37:55
https://webtrh.cz/diskuse/jak-na-razeni-zaznamu-z-api-jquery-to-vidi-jinak#reply1404259
vlkosin
verified
rating uzivatele
(6 hodnocení)
22. 10. 2019 21:05:08
Napsal Jan Stejskal;1530596
Dokumentace: http://www.json.org/ "An object is an unordered set of name/value pairs."
Pro udržení pořadí je nutné použít pole. Nicméně v tom příkladu máte data jako pole, takže ten dotaz mi nedává smysl.
Napsal musil.david;1530590
Tak nakonec se ukazuje, že objekt umí držet pořadí. Chybka totiž byla jinde. Problém byl za klávesnicí, když testoval na jiné verzi API...
Nemusím znát přesný index, jen mi stačí to pořadí dat a to se udrží.
Myslim ze mate i nemate pravdu oba dva, protoze je to zamotanejsi a jinak:-)
Do ES2015 objekty v JS nedrzely poradi vkladani, ale od ES2015 to uz neplati, krome pripadu, kdy jsou pouzity jako klice cela cisla (at uz jako cisla nebo ve string forme...),
pak pri vypisu klicu nedostanete poradi podle toho, jak byly vkladany, ale poradi podle vzestupne hodnoty tech celociselnych klicu...
Pokud ale jsou jako klice stringy (ne stringy celych cisel!), tak nic takoveho nehrozi, a takove klice poradi nijak nezmeni, a bude to odpovidat tomu, jak byly do objektu vkladane...
Prakticky to tedy zavisi na tom, jaka to je ES implementace, ktera bude JS kod vykonavat a jake mate klice v objektu.
const c = {1:300, 5:100, "2":1000};
Object.keys(c) // ->
//integers klice se seradi vzestupne
const b = {"noha":true, "ruce":2, "oko":"2 kusy", "ocas":false};
Object.keys(b); // ->
//poradi zustane zachovano
const a = {"noha":true, "ruce":2, "oko":"2 kusy", 555:true, "ocas":false, 1:300, 5:100, "2":1000, 1.56:"feeee"};
Object.keys(a); // -> 
//opet integers se prioritne seradi vzestupne na zacatek, stringy maji stejne poradi jako by mely kdyby se vyfiltrovaly integers
---------- Příspěvek doplněn 22.10.2019 v 21:11 ----------
Jo, jen poznamenavam, ze to jsou vysledky z konzole aktualniho chrome :-)
22. 10. 2019 21:05:08
https://webtrh.cz/diskuse/jak-na-razeni-zaznamu-z-api-jquery-to-vidi-jinak#reply1404258
Pro odpověď se přihlašte.
Přihlásit