JavaScript හි පුනරාවර්තනය සහ බහුමාන ව්යුහයන්
අත්තනෝමතික මට්ටමේ සංකීර්ණතාවයක් ඇති බහුමාන අරාවක් ලබා දී ඇත, උදාහරණයක් ලෙස, මෙය:
let arr = [
1,
[
2, 7, 8
],
[
3, 4, [5, [6, 7]],
]
];
ඔබට පෙනෙන පරිදි, මෙම අරාවට සංකීර්ණ ව්යුහයක් ඇත, තවද මෙම ව්යුහය අත්තනෝමතික විය හැකි අතර සංකීර්ණතා මට්ටම් අතිශයින් ගැඹුරු විය හැකි බව උපකල්පනය කෙරේ.
අපට අපගේ අරාවේ සියලුම ප්රාථමික (එනම් අරා නොවන) මූලද්රව්ය console හි ප්රදර්ශනය කිරීමට අවශ්ය යැයි සිතමු. මෙම අවස්ථාවේදී, එවැනි අරාවක් පිරික්සීම සඳහා ලූප භාවිතා කිරීමට අපට හුදෙක් හැකියාව නොලැබේ, මන්ද අරාවට නිවැරදි නොවන ව්යුහයක් සහ නොදන්නා සංකීර්ණතා මට්ටමක් ඇත.
එහෙත්, එවැනි අරාවක් පිරික්සීම සඳහා පුනරාවර්තනය භාවිතා කිරීම ඉතා පහසු වනු ඇත.
පළමුව, අපි ශ්රිතයක් සාදා, එහි පරාමිතියක් ලෙස අපගේ අරාව යොමු කරන අතර, ශ්රිතය තුළ අපගේ අරාව පිරික්සීම සඳහා ලූපයක් සාදමු:
function func(arr) {
for (let elem of arr) {
console.log(elem);
}
}
func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);
අප විසින් සාදන ලද ලූපය ප්රධාන අරාවේ
මූලද්රව්ය පමණක් පිරික්සනු ඇත. එනම්, මුලින්ම
එය 1 ප්රදර්ශනය කරනු ඇත, ඉන්පසු [2, 7, 8],
ඉන්පසු [3, 4, [5, [6, 7]].
දැන් අපි ලූපය තුළ ප්රාථමික මූලද්රව්ය සහ අරා මූලද්රව්ය වෙන් කරමු:
function func(arr) {
for (let elem of arr) {
if (typeof elem == 'object') {
// මූලද්රව්යය - අරාව
} else {
// මූලද්රව්යය - ප්රාථමික
console.log(elem);
}
}
}
func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);
දැන් අපි එසේ කරමු, අපගේ මූලද්රව්යය අරාවක් නම්, ශ්රිතයම තමාටම කැඳවන්නේ, මෙම අරාව පරාමිතියක් ලෙස යොමු කරමින්:
function func(arr) {
for (let elem of arr) {
if (typeof elem == 'object') {
func(elem);
} else {
console.log(elem);
}
}
}
func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);
අත්තනෝමතික මට්ටමේ සංකීර්ණතාවයක් ඇති බහුමාන වස්තුවක් ලබා දී ඇත, උදාහරණයක් ලෙස, මෙය:
{a: 1, b: {c: 2, d: 3, e: 4}, f: {g: 5, j: 6, k: {l: 7, m: {n: 8, o: 9}}}}
පුනරාවර්තනය භාවිතයෙන් මෙම වස්තුවේ සියලුම ප්රාථමික මූලද්රව්ය console හි ප්රදර්ශනය කරන්න.
අත්තනෝමතික මට්ටමේ සංකීර්ණතාවයක් ඇති බහුමාන අරාවක් ලබා දී ඇත, උදාහරණයක් ලෙස, මෙය:
[1, [2, 7, 8], [3, 4, [5, [6, 7]]]]
අපගේ බහුමාන අරාව ඒකමාන අරාවකට විහිදුවන කේතය ලියන්න. ඉහත දක්වා ඇති අරාව සඳහා එය මෙසේ පෙනෙනු ඇත:
[1, 2, 7, 8, 3, 4, 5, 6, 7]