Datu struktūru piemēri

Šajā rakstā jūs uzzināsiet par dažiem visbiežāk sastopamajiem datu struktūru piemēriem.

Galvenā uzmanība tiks pievērsta darbam ar objektu, masīvu, karšu un iestatīšanas datu struktūrām (Object, Array, Map and Set data structures) JavaScript, izmantojot vairākus piemērus.

Ņemiet vērā, ka šajā rakstā netiks apspriestas dažas datu struktūras, kas pastāv dažās citās valodās, piemēram, rindas vai saistītie saraksti. Lai gan šīs datu struktūras (un arī citas datu struktūras!) var pielāgot JavaScript kodēšanai, šo tēmu uzlabotais raksturs un grūtības ar saistīto vingrinājumu ieviešanu nozīmē, ka tās neietilpst šajā rakstā.

Darbs ar masīviem JavaScript

Iepriekš esat apskatījis daudzus jēdzienus, kas saistīti ar darbu ar JavaScript masīviem.

Tomēr joprojām ir dažas svarīgas tēmas, kuras var apskatīt, un viena no tām ir, piemēram, darbs ar dažām iebūvētām metodēm.

Šajā rakstā galvenā uzmanība tiek pievērsta trim specifiskām metodēm, kas pastāv masīvos:

  1.  forEach 
  2. filter
  3.  map

Izpētīsim šīs metodes.

ForEach() metode
JavaScript masīviem ir ērta metode, kas ļauj pārslēgt katru to dalībnieku.

Šeit ir pamata sintakse:

const augļi = ['kivi','mango','ābols','persiks'];
function appendIndex(augļi, index) {
    console.log(`${index}. ${augļi}`)
}
augļi.forEach(appendIndex);
Paredzētā izvade:
0. kivi
1. mango
2. ābols
3. persiks

Lai izskaidrotu sintaksi, metode forEach() pieņem funkciju, kas darbosies ar katru masīva vienumu. Šīs funkcijas pirmais parametrs ir pats pašreizējais masīva vienums, bet otrais (neobligāts) parametrs ir indekss.

Ļoti bieži funkcija, kas jāizmanto metodei forEach(), tiek nodota tieši metodes izsaukumā, piemēram:

const veggies = ['onion', 'garlic', 'potato'];
veggies.forEach( function(veggie, index) {
    console.log(`${index}. ${fruit}`);
});

Paredzētā izvade:

0. sīpols
1. ķiploks
2. kartupelis

Tas padara kodu kompaktāku, bet, iespējams, nedaudz grūtāk lasāmu. Lai palielinātu lasāmību, dažreiz tiek izmantotas bultiņu funkcijas. Vairāk par bultiņu funkcijām varat uzzināt citā manā rakstā.

Filtra() metode

Vēl viena ļoti noderīga metode masīvā ir filtra() metode. Tas filtrē jūsu masīvus, pamatojoties uz noteiktu testu. Tiek atgriezti tie masīva vienumi, kas iztur pārbaudi.

Šeit ir piemērs:

const nums = [0,10,20,30,40,50];
nums.filter( function(num) {
    return num > 20;
})
līdzīgi kā forEach() metodei, arī filtra() metode pieņem funkciju, un šī funkcija veic noteiktu darbu pie katra masīva vienumiem.

MAP metode

Visbeidzot, ir ļoti noderīga kartes metode.

Šo metodi izmanto, lai kartētu katru masīva vienumu uz cita masīva vienumu, pamatojoties uz jebkuru darbu, kas tiek veikts funkcijā, kas tiek nodota kartei kā parametrs.

Piemēram:

[0,10,20,30,40,50].map( function(num) {
    return num / 10
})

Kā jau minēts, pareizas datu struktūras izvēle ietekmē pašu kodu, ko varat rakstīt. Tas ir tāpēc, ka pašai datu struktūrai ir iebūvēta funkcionalitāte, kas atvieglo noteiktu uzdevumu izpildi vai padara to grūtāku vai pat neiespējamu, nepārveidojot kodu par pareizu datu struktūru.

Tagad, kad esat apskatījis metodes, izpētīsim, kā strādāt ar dažādām JavaScript iebūvētām datu struktūrām.

 

Darbs ar objektiem JavaScript

Esmu jau rakstijis par to, kā strādāt ar objektiem JavaScript.

Tālāk sniegtajā piemērā ir parādīts, kā izmantot objekta datu struktūru, lai pabeigtu konkrētu uzdevumu. Šis uzdevums ir pārvērst objektu par masīvu:

const rezultāts = [];
const drons = {
    ātrums: 100,
    krāsa: 'dzeltens'
}
const droneKeys = Object.keys(drons);
droneKeys.forEach( function(key) {
    rezultāts.push(key, drons[key])
})
console.log(rezultāts)
Paredzētā izvade:
[ 'ātrums', 100, 'krāsa', 'dzeltens' ]

Lai gan tas ir iespējams un darbojas, kaut kas līdzīgs šim var nozīmēt, ka neesat izvēlējies pareizo datu struktūru, ar kuru strādāt savā kodā.

No otras puses, dažreiz jūs nevarat izvēlēties datu struktūru, ar kuru strādājat. Iespējams, šie dati tiek saņemti no trešās puses datu nodrošinātāja, un viss, ko varat darīt, ir kodēt savu programmu, lai tā tos patērē. Jūs uzzināsiet vairāk par datu apmaiņu tīmeklī, kad uzzināsiet par JSON (JavaScript Object Notation).

Strādājot ar MAPS kartēm…

Lai izveidotu jaunu karti, varat izmantot kartes konstruktoru:

new Map();

Karte var šķist ļoti līdzīga objektam JS.

Tomēr tam nav mantojuma. Nav prototipu! Tas padara to noderīgu kā datu krātuvi.

Piemēram:

let labākieBokseri = new Map();
labākieBokseri.set(1, "Čempions");
labākieBokseri.set(2, "Uzlecošā zvaigzne");
labākieBokseri.set(3, "Trešā vieta");


console.log(labākieBokseri);
Paredzētā izvade:
Map(3) {
  1 => 'Čempions',
  2 => 'Uzlecošā zvaigzne',
  3 => 'Trešā vieta'
}
Lai iegūtu noteiktu vērtību, jums jāizmanto metode get(). Piemēram:
labākieBokseri.get(1); // 'Čempions'

Darbs ar komplektiem SETS JavaScript

Komplekts ir unikālu vērtību kopums.

Lai izveidotu jaunu komplektu, varat izmantot Set konstruktoru:

new Set();

Set konstruktors var, piemēram, pieņemt masīvu.

Tas nozīmē, ka mēs varam to izmantot, lai ātri filtrētu masīvu unikāliem dalībniekiem.

 

const atkārtotieAugļi = ['apple','pear','apple','pear','plum', 'apple'];
const unikālieAugļi = new Set(atkārtotieAugļi);
console.log(unikālieAugļi);
Sagaidāmā izvade:
Set(3) { 'apple', 'pear', 'plum' }

Citas JavaScript datu struktūras

Papildus JavaScript iebūvētajām datu struktūrām ir iespējams izveidot arī svešas, pielāgotas datu struktūras.

Šīs datu struktūras ir iebūvētas dažās citās programmēšanas valodās vai pat tajās citās programmēšanas valodās, kuras tās neatbalsta.

Dažas uzlabotas datu struktūras, kas nav ietvertas, ietver:

  • Rindas ( Queues)
  • Saistītie saraksti (atsevišķi saistīti un divkārši saistīti) / Linked lists (singly-linked and doubly-linked)
  • Koki / Trees
  • Grafiki / Graphs

Lai iegūtu informāciju par šo datu struktūru veidošanu, lūdzu, skatiet papildu informāciju.

Loading

Noderīgs raksts? Dalies ar citiem: