Funkciju parametru destrukturizācija JavaScript

Destrukturizācijai ir vēl viena ļoti svarīga lietošanas joma - funkciju parametru nodošana. Būtība ir sekojoša: ja funkcija kā parametru pieņem masīvu, mēs funkcijas deklarēšanā varam norādīt, kā šo masīvu destrukturizēt.

Apskatīsim piemērā. Pieņemsim, ka mums ir funkcija, kas kā parametru pieņem masīvu ar gadu, mēnesi un dienu:

javascriptfunc([2025, 12, 31]);

Funkcijas parametrā norādīsim, kādos mainīgajos šis masīvs jāsadala:

javascriptfunction func([year, month, day]) {
  console.log(year);  // izvadīs 2025
  console.log(month); // izvadīs 12
  console.log(day);   // izvadīs 31
}

Iepriekš minēto konstrukciju vajadzētu uzskatīt par vienu funkcijas parametru. Vēloties var pievienot vēl parametrus:

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

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

Nākamajā piemērā funkcijas pirmo un otro parametru pārsūta masīvi, un mēs destrukturizējam abiem no tiem:

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

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

Pārveidojiet šādu kodu ar destrukturizāciju saskaņā ar apgūto teoriju:

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

Pārveidojiet šādu kodu ar destrukturizāciju saskaņā ar apgūto teoriju:

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

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

Pārveidojiet šādu kodu ar destrukturizāciju saskaņā ar apgūto teoriju:

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

Pārveidojiet šādu kodu ar destrukturizāciju saskaņā ar apgūto teoriju:

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] );