IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: jak sortovat json, ale s pomocí proměnných

V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
David Šabacký:26.8.2021 23:49

Zdravím,

mám JSON a potřeboval bych ho sortovat podle jednotlivých polí, dle požadavku uživatele. Moje myšlenka je vytvořit funkci, převezme klíč, podle kterého se bude sortovat a vrátí zpět JSON řetězec. Problém je v tom, že se mi nedaří syntaxe.

Zkusil jsem:

function SortTable(index){
....
data.sort((a, b) => {
        return (a.index) - (b,index);
})
...

Chci docílit: Potřeboval bych, aby v řádku:

return (a.index) - (b,index);

byl index brán jako proměnná.

Moc díky za pomoc

David

 
Odpovědět
26.8.2021 23:49
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:27.8.2021 10:02

A zkusil jsi si to vypsat do konzole? Tam by ti napsal totiz undefined.
Jinak, na foru je to pomerne jasne videt, tag code ma vhodny font pro odliseni spravnych a spatnych znaku (pokud jsi zkopiroval kod). Najsi 7 rozdilu :)

return (a.index) - (b,index); // spatne, tvoje
return (a.index) - (b.index);
return a.index - b.index;
return a['index'] - b['index'];
return a["index"] - b["index"];
Editováno 27.8.2021 10:04
 
Nahoru Odpovědět
27.8.2021 10:02
Avatar
Odpovídá na Peter Mlich
David Šabacký:27.8.2021 11:37

Ahoj,

díky moc. Ta tečka/čárka byla jen chyba při přepisu. Nicméně jsem zkoušel všechno co jsi mi poslal a ani jedno mi nefungovalo. Jde to vůbec nějak?

David

 
Nahoru Odpovědět
27.8.2021 11:37
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:28.8.2021 9:13

Ok, takze zbyva moznost, abys vyrobil funkcni demo priklad, kompletni, jednoduchy kod, ktery lze spustit bez nutnosti hadat, jak vypada asi nejaka jina cast kodu. Takhle se tu muzeme bavit do nekonecna. Muzu ti napsat vlastni kod, ktery funguje,,, Ale to neni rada, ale vypracovani reseni.

google = js array sort by key
https://developer.mozilla.org/…s/Array/sort
(oficialni stranky dokumentace javascriptu ve firefoxu)

var items = [
  { name: 'Edward', value: 21 },
  { name: 'Sharpe', value: 37 },
  { name: 'And', value: 45 },
  { name: 'The', value: -12 },
  { name: 'Magnetic', value: 13 },
  { name: 'Zeros', value: 37 }
];

// sort by value
items.sort(function (a, b) {
  return a.value - b.value;
});

// sort by name
items.sort(function(a, b) {
  var nameA = a.name.toUpperCase(); // ignore upper and lowercase
  var nameB = b.name.toUpperCase(); // ignore upper and lowercase
  if (nameA < nameB) {
    return -1;
  }
  if (nameA > nameB) {
    return 1;
  }

  // names must be equal
  return 0;
});
 
Nahoru Odpovědět
28.8.2021 9:13
Avatar
Odpovídá na Peter Mlich
David Šabacký:28.8.2021 10:17

Díky, ale tohle mi funguje jak hodinky.... spíše jde o to, zda by se dal ten klíč, ty používáš value, definovat jako proměnná. Udělal bych si funkci a sortoval bych vždy podle toho co zrovna chce uživatel. Takhle bych musel na každý klíč napsat vlastní funkci.

D

 
Nahoru Odpovědět
28.8.2021 10:17
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:28.8.2021 12:25
return a['index'] - b['index'];
return a["index"] - b["index"]; // muj puvodni kod
key = 'index';
return a[key] - b[key];

Jako, asi by to slo pres callback do te funkce. Ale muzes klidne pouzit globalni promenou.

// sort by value - puvodni kod z te stranky
items.sort(function (a, b) {
  return a.value - b.value;
});

// upraveny kod
var key = 'value';
items.sort(function (a, b) {
  return a[key] - b[key];
});
Editováno 28.8.2021 12:26
 
Nahoru Odpovědět
28.8.2021 12:25
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.