Prodej eshopu vč. technologií na potisk textilu
Zobrazují se odpovědi 1 až 5 z 5

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

  1. 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é.

    Název:  Snímek obrazovky 2019-06-04 v 13.44.29.png
Zobrazení: 163
Velikost:  155,7 KB

    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?

  2. Co se právě děje na Webtrhu?
  3. 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. 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ží.

  5. Citace Původně odeslal musil.david Zobrazit příspěvek
    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.

  6. Citace Původně odeslal Jan Stejskal Zobrazit příspěvek
    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.
    Citace Původně odeslal musil.david Zobrazit příspěvek
    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) // -> ["1", "2", "5"]
    //integers klice se seradi vzestupne

    const b = {"noha":true, "ruce":2, "oko":"2 kusy", "ocas":false};
    Object.keys(b); // -> ["noha", "ruce", "oko", "ocas"]
    //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); // -> ["1", "2", "5", "555", "noha", "ruce", "oko", "ocas", "1.56"]
    //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 :-)

Hostujeme u Server powered by TELE3