Mbinu ya map

Mbinu map inaruhusu kutumia kitendakazi kilichobainishwa kwa kila kipengele cha safu (array). Wakati huo, mbinu haibadili safu asilia, bali inawarudisha ile iliyobadilika.

Mbinu hupokea kitendakazi kwenye kigezo, ambacho kitatekelezwa kwa kila kipengele cha safu (array). Kile kitakachorudishwa na kitendakazi hicho kupitia return kwa kipengele cha safu, kitakuwa thamani mpya ya kipengele hicho (angalia mifano).

Kwa kitendakazi kunaweza kupitishwa 3 vigezo. Ikiwa vigezo hivi vipo (sio lazima), basi kwa kigezo cha kwanza kitaingia moja kwa moja kipengele cha safu, kwa cha pili kitaingia nambari yake kwenye safu (index), na kwa cha tatu - safu yenyewe.

Syntax

javascriptlet safu_mpya = safu.map(function(kipengele, index, safu) {
  code
  return kipengele_kilibadilika;
});

Mfano

Wacha tuunde safu, ambapo kila kipengele chake kina ukubwa mara mbili ya kipengele sambamba cha safu ya mwanzo:

javascriptlet arr = [1, 2, 3, 4, 5];

let res = arr.map(function(elem) {
  return elem * 2;
});

console.log(res);

Matokeo ya utekelezaji wa code:

javascript[2, 4, 6, 8, 10]

Mfano

Wacha tuunde safu, ambapo kila kipengele chake kinapatikana kama ifuatavyo - thamani ya kipengele inazidishwa kwa nambari yake ya mlolongo kwenye safu:

javascriptlet arr = [1, 2, 3, 4, 5];

let res = arr.map(function(elem, index) {
  return elem * index;
});

console.log(res);

Matokeo ya utekelezaji wa code:

javascript[0, 2, 6, 12, 20]

Mfano

Ikiwa ni lazima, kwa kigezo cha tatu kunaweza kupitishwa safu yenyewe:

javascriptlet arr = [1, 2, 3, 4, 5];

let res = arr.map(function(elem, index, arr) {
  hapa safu arr itapatikana
});

Mfano

Mbinu map inaweza kutumika pia kwa kupitia safu zenye tabaka nyingi (multidimensional arrays). Hebu, kwa mfano, iwe kuna safu kama hii:

javascriptlet arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];

Wacha tupitie safu hii kupitia map na tuonyeshe viperengele vyake kwenye konsole:

javascriptlet arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];

let result = arr.map(function(elem) {
  console.log(elem);
});

Kama matokeo console.log itaonyesha [1, 2, 3], kisha [4, 5, 6], kisha [7, 8, 9].

Kama unavyoona, kwenye variable elem huingia safu ndogo (subarrays). Sasa wacha tutumie mbinu map kwa kila safu ndogo na tuinue kila kipengele chake kwa mraba:

javascriptlet arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];

let result = arr.map(function(elem) {
  return elem.map(function(num) {
    return num * num;
  });
});

console.log(result);

Angalia pia

  • mbinu forEach,
    ambayo hutumia kitendakazi kwa kila kipengele cha safu (array)
  • mbinu filter,
    ambayo inaruhusu kuchuja viperengele vya safu (array)
  • mbinu some na every,
    zinatekeleza ukaguzi wa safu (array)
  • mbinu reduce na reduceRight,
    zinazokunja safu (array) kwa thamani moja