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 функциямиз ёрдамида ҳар бир сатрнинг биринчи белгисини катта ҳарф қилинг.