⊗jsSpRERMC 127 of 294 menu

Callback katika njia replace katika misimbo ya kawaida ya JavaScript

Njia replace inaweza kuchukua kigezo cha pili sio tu kamba, bali pia kitendo-callback, ambacho kitatumika kwa kila mechi iliyopatikana. Kila kamba ndogo, ambayo misimbo ya kawaida ilipata, itabadilishwa na kile ambacho kitakachorudishwa na kitendo hiki kwa kamba ndogo husika.

Kwa kitendo hiki unaweza kupitisha viambajengo: kiambajengo cha kwanza kitaweka kamba iliyopatikana, kiambajengo cha pili - mfuko wa kwanza, kiambajengo cha tatu - mfuko wa pili na kadharika - unaweza kufanya viambajengo vingapi, mifuko mingapi katika usemi wa kawaida.

Katika kiambajengo cha karibu cha mwisho kitawekwa nafasi ya mechi iliyopatikana, na katika kiambajengo cha mwisho - kamba yote, ambayo utafutaji unafanywa.

Jinsi yote haya yanavyofanya kazi - tutachambua kwa mifano ya vitendo.

Mfano

Hebu iwe na kamba na nambari:

let str = '2 3 4 5';

Wacha tubadilishe nambari hizi kuwa mraba wao. Kwa kuanza hebu tuonyeshe nambari zetu kwa mfuatano kwenye koni katika kitendo-callback:

str.replace(/\d+/g, function(match) { console.log(match); });

Kodi yetu itaonyesha kwanza '2', kisha '3', '4' na '5'. Yaani kwenye kigezo match kwa mfuatano huingia kamba hizo, ambazo misimbo ya kawaida ilizipata.

Wacha tutatue tatizo hadi mwisho - tutainua match kwa mraba na kuirudisha kwa kutumia return. Itatokea, kwamba kwa nambari mbili iliyopatikana itarudishwa 4 na nambari mbili itabadilishwa kuwa nne hii, kwa nambari tatu iliyopatikana itarudishwa 9 na nambari tatu itabadilishwa kuwa tisa - na kadharika:

let result = str.replace(/\d+/g, function (match) { return match**2; }); console.log(result); // itaonyesha '4 9 16 25'

Mfano

Hebu sasa kwenye kamba iwe na miundo ya aina '2+3=':

let str = '2+3= 4+5= 6+7=';

Wacha tufanye ili baada ya sawa kuingizwe jumla ya nambari husika. Yaani kamba yetu ibadilike kuwa ifuatayo:

'2+3=5 4+5=9 6+7=13'

Kutatua tatizo hebu tena tujaribu - tutatenganisha nambari ya kwanza na ya pili kwa mifuko tofauti:

str.replace(/(\d+)\+(\d+)=/g, function (match0, match1, match2) { console.log(match0, match1, match2); });

Na sasa tutatua tatizo kabisa: kwa kila kamba ndogo iliyopatikana tutajumlisha mfuko wa kwanza na wa pili, tutachukua mfuko wa sifuri (kamba iliyopatikana, kwa mfano '2+3='), tuongeze kwake matokeo na turudishe yote haya kupitia return:

let result = str.replace(/(\d+)\+(\d+)=/g, function(match0, match1, match2) { let sum = Number(match1) + Number(match2); return match0 + sum; }); console.log(result);

Matatizo ya Vitendo

Iwe na kamba:

let str = 'aaa [2] bbb [3] ccc [12] ddd';

Tafuta nambari, zilizo kwenye mabano na ziongezee mara mbili. Yaani kutoka kwenye kamba yetu inapaswa kupatikana ifuatayo:

'aaa [4] bbb [6] ccc [24] ddd'

Iwe na kamba:

let str = '123 456 789';

Tafuta nambari zote na uzibadilishe tarakimu zake kwa mpangilio wa nyuma. Yaani kutoka kwenye kamba yetu inapaswa kupatikana ifuatayo:

'321 654 987'

Iwe na kamba na tarehe:

let str = '31.12.2025 30.11.2024 29.10.2023';

Tafuta tarehe zote na ubadilishe kwa muundo mwingine ili kupatikana kamba ifuatayo:

'2025-12-31 2024-11-30 2023-10-29'
uzcuzlbnkksw