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:
- forEach
- filter
- 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);
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;
})
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)
[ 'ā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);
Map(3) {
1 => 'Čempions',
2 => 'Uzlecošā zvaigzne',
3 => 'Trešā vieta'
}
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);
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.
Atbildēt
Lai komentētu, jums jāpiesakās sistēmā.