JavaScript-ի কলբեք ֆունկցիաները

Ֆունկցիաները կարող են փոխանցվել որպես պարամետրեր այլ ֆունկցիաների: Նման ֆունկցիա-պարամետրերը կոչվում են կոլբեքներ (callback): Եկեք դիտարկենք դրանց հետ աշխատանքը օրինակով:

Ենթադրենք, մենք ուզում ենք ստեղծել մի ֆունկցիա, որն առաջին պարամետրով կվերցնի զանգված, իսկ երկրորդով՝ կոլբեք, որը կկիրառի զանգվածի յուրաքանչյուր տարրի նկատմամբ:

javascriptfunction each(arr, callback) {
  // այստեղ ինչ-որ կոդ
}

Եկեք գրենք մեր ֆունկցիայի իրականացումը.

javascriptfunction each(arr, callback) {
  let result = [];
  
  for (let elem of arr) {
    result.push( callback(elem) ); // կանչում ենք կոլբեք ֆունկցիան
  }
  
  return result;
}

Մեր each ֆունկցիան ունիվերսալ է: Սա նշանակում է, որ մենք կարող ենք դրան փոխանցել տարբեր կոլբեքներ՝ կատարելով տարբեր գործողություններ զանգվածների վրա: Այս դեպքում մեր ֆունկցիայի կոդը կմնա անփոփոխ – կփոխվեն միայն փոխանցվող կոլբեքները:

Օրինակի համար եկեք մեր ֆունկցիայի միջոցով քառակուսի բարձրացնենք ինչ-որ զանգվածի յուրաքանչյուր տարրը: Դրա համար փոխանցենք որպես պարամետր համապատասխան կոլբեքը.

javascriptlet result = each([1, 2, 3, 4, 5], function(num) {
  return num ** 2;
});

console.log(result);

Այժմ եկեք զանգվածի տարրերը բարձրացնենք խորանարդ: Դրա համար որպես պարամետր փոխանցենք արդեն մի այլ կոլբեք, որը կկատարի այս գործողությունը.

javascriptlet result = each([1, 2, 3, 4, 5], function(num) {
  return num ** 3;
});

console.log(result);
Задание 1

Տրված է թվերի զանգված: Մեր ստեղծած each ֆունկցիայի միջոցով կրկնապատկեք յուրաքանչյուր տարր:

Задание 2

Տրված է տողերի զանգված: Մեր ստեղծած each ֆունկցիայի միջոցով հակադարձեք յուրաքանչյուր տողի սիմվոլները հակառակ հերթականությամբ:

Задание 3

Տրված է տողերի զանգված: Մեր ստեղծած each ֆունկցիայի միջոցով դարձրեք մեծատառ յուրաքանչյուր տողի առաջին սիմվոլը: