‘ For ‘ cilpas un objekti / JavaScrpt
Šajā rakstā jūs uzzināsiet, kā for cilpa darbojas konceptuāli.
Lai sāktu, ir svarīgi zināt, ka for cilpa nevar darboties tieši objektā, jo objekts nav atkārtojams. Piemēram:
const automašīna = {
ātrums: 100,
krāsa: "blue"
}
for(prop of automašīna) {
console.log(prop)
}
Error on line 6:
for(prop of automašīna) {
^
TypeError: automašīna is not iterable
Pretēji objektiem masīvi ir atkārtojami un tos šajā gadījumā var izmantot. Piemēram:
const krāsām = ['sarkans','oranžs','dzeltens']
for (var krāsa of krāsām) {
console.log(krāsa);
}
sarkans
oranžs
dzeltens
Par laimi, varat izmantot to, ka ar for cilpu var palaist masīvus, cilpu pār objektiem.
Bet kā?
Lai varētu pareizi atbildēt uz šo jautājumu, vispirms ir jāpārskata trīs iebūvētās metodes: Object.keys(), Object.values() un Object.entries().
Iebūvētās metodes:
Metode Object.keys() saņem objektu kā savu parametru. Atcerieties, ka šis objekts ir objekts, kuram vēlaties pāriet. Vēl ir pāragri paskaidrot, kā jūs cilpā operēsiet pār pašu objektu; pagaidām koncentrējieties uz atgriezto rekvizītu masīvu, kad izsaucat metodi Object.keys().
Šeit ir piemērs metodes Object.keys() palaišanai pavisam jaunā automašīna2 objektā:
const automašīna2 = {
ātrums: 200,
krāsa: "sarkana"
}
console.log(Object.keys(automašīna2)); // [ 'ātrums', 'krāsa' ]
Object.values() metode
Vēl kāda noderīga metode ir Object.values():
const automašīna3 = {
ātrums: 300,
krāsa: "dzeltena"
}
console.log(Object.values(automašīna3)); // [300, 'dzeltena']
Metode Object.entries()
const automašīna4 = {
ātrums: 400,
krāsa: 'pelēka'
}
console.log(Object.entries(automašīna4));
PIEMĒRI:
Tagad jums ir visas sastāvdaļas, kas nepieciešamas, lai pārietu uz jebkura objekta rekvizītu atslēgām un vērtībām.
Šeit ir ļoti vienkāršs piemērs, kā to izdarīt:
var apģērbaGabals = {
cena: 50,
krāsa: 'bēša',
materiāls: 'kokvilna',
sezona: 'rudens'
}
for( key of Object.keys(apģērbaGabals) ) {
console.log(keys, ":", apģērbaGabals[key])
}
Sarežģītākā daļa, kas jāsaprot šajā sintaksē, iespējams, ir apģērba vienums [key].
Par laimi, to nav pārāk grūti saprast, jo īpaši tāpēc, ka jūs jau esat aprakstījis šo jēdzienu iepriekš, kad mācījāties, kā piekļūt objekta elementam, izmantojot apzīmējumu iekavās.
Atcerieties, ka jūs arī uzzinājāt, kā dinamiski piekļūt īpašuma nosaukumam.
Lai pārskatītu šo koncepciju un parādītu praktisku demonstrāciju, kā tas darbojas, iekodēsim funkcijas deklarāciju, kas nejauši piešķir vai nu virknes ātrumu, vai virknes krāsu mainīgā nosaukumam, un pēc tam izveidosim objektu, kuram ir tikai divi ‘key’: ātruma-key un krāsu-key.
Pēc šīs iestatīšanas varēsit dinamiski piekļūt jebkuram no šiem rekvizītiem pavisam jaunā objektā, izmantojot iekavas.
Šeit ir piemēra kods:
function testējamIekavuDinamiskoPiekļuvi() {
var dinamiskāAtslēga;
if(Math.random() > 0.5) {
dinamiskāAtslēga = "ātrums";
}else{
dinamiskāAtslēga = "krāsa";
}
var drone = {
ātrums: 15,
krāsa: "oranža"
}
console.log(drone[dinamiskāAtslēga]);
}
testējamIekavuDinamiskoPiekļuvi();
Šis piemērs varētu šķist nedaudz sarežģīts, taču tā mērķis ir demonstrēt faktu, ka jūs iegūstat vienu vai otru vērtību no objekta atslēgas, pamatojoties uz virkni, kas tika piešķirta mainīgajam dynamiskāAtslēga un kurai bez problēmām piekļūt, izmantojot iekavas.
Varat vairākas reizes palaist funkciju testējamIekavuDinamiskoPiekļuvi
, un pamanīsiet, ka dažreiz izvadītā vērtība ir 15, bet dažreiz tā ir oranža, lai gan es vienmēr piekļūstu drone [diznamiskāAtslēga] atslēgai (key). Tā kā dinamiskās atslēgas vērtība tiek aizpildīta Math.random() izsaukumā, dažreiz šī izteiksme tiek novērtēta kā drone[“ātrums”], bet citreiz šī izteiksme tiek novērtēta kā drone[“krāsa”].
Tagad esat uzzinājis par veidošanas blokiem, kas padara for cilpu noderīgu objektu atkārtošanai, lai gan objekti nav iterējami.
Atbildēt
Lai komentētu, jums jāpiesakās sistēmā.