Funkcijų parametrų destruktūrizavimas JavaScript

Destruktūrizavimas turi dar vieną labai svarbią taikymo sritį - funkcijų parametrų perdavimą. Esmė tokia: jei funkcija priima kaip parametrą masyvą, mes galime tiesiogiai funkcijos deklaracijoje nurodyti, kaip destruktūrizuoti tą masyvą.

Pažiūrėkime pavyzdį. Tarkime, mes turime funkciją, kuri parametru priima masyvą su metais, mėnesiu ir diena:

javascriptfunc([2025, 12, 31]);

Tiesiogiai funkcijos parametre nurodykime, į kuriuos kintamuosius reikia išskaidyti šį masyvą:

javascriptfunction func([year, month, day]) {
  console.log(year);  // išves 2025
  console.log(month); // išves 12
  console.log(day);   // išves 31
}

Anksčiau pateiktą konstrukciją reikėtų vertinti kaip vieną funkcijos parametrą. Jei norima, galima pridėti daugiau parametrų:

javascriptfunc('str1', [2025, 12, 31], 'str2');

function func(param1, [year, month, day], param2) {
  console.log(param1); // išves 'str1'
  
  console.log(year);   // išves 2025
  console.log(month);  // išves 12
  console.log(day);    // išves 31
  
  console.log(param2); // išves 'str2'
}

O kitame pavyzdyje pirmas ir antras funkcijos parametrai yra perduodami masyvai ir mes destruktūrizuojame abu iš jų:

javascriptfunc([2025, 12, 31], [2026, 11, 30]);

function func([year1, month1, day1], [year2, month2, day2]) {
  console.log(year1);  // išves 2025
  console.log(month1); // išves 12
  console.log(day1);   // išves 31
  
  console.log(year2);  // išves 2026
  console.log(month2); // išves 11
  console.log(day2);   // išves 30
}
Задание 1

Pakeiskite šį kodą naudodami destruktūrizavimą pagal išmoktą teoriją:

javascriptfunction func(employee) {
  let name       = employee[0];
  let surname    = employee[1];
  let department = employee[2];
  let position   = employee[3];
  let salary     = employee[4];
}

func( ['John', 'Smit', 'development', 'programmer', 2000] );
Задание 2

Pakeiskite šį kodą naudodami destruktūrizavimą pagal išmoktą teoriją:

javascriptfunction func(employee) {
  let name     = employee[0];
  let surname  = employee[1];
  let info     = employee[2];
}

func( ['John', 'Smit', 'development', 'programmer', 2000] );
Задание 3

Pakeiskite šį kodą naudodami destruktūrizavimą pagal išmoktą teoriją:

javascriptfunction func(employee) {
  let name       = employee[0];
  let surname    = employee[1];
  let department = employee[2];
  
  let position;
  if (arr[3] !== undefined) {
    position = arr[3];
  } else {
    position = 'junior';
  }
}

func( ['John', 'Smit', 'development'] );
Задание 4

Pakeiskite šį kodą naudodami destruktūrizavimą pagal išmoktą teoriją:

javascriptfunction func(department, employee, hired) {
  let name     = employee[0];
  let surname  = employee[1];
  
  let year  = hired[0];
  let month = hired[1];
  let day   = hired[2];
}

func( 'development', ['John', 'Smit'], [2018, 12, 31] );