for...in
යමෙකු ඔබට එසේ කීවේ මන්දැයි මට අනුමාන කළ හැකි වුවද, අරාව සඳහා ලූපය භාවිතා කිරීම වැරදිය.
1.) දැනටමත් ඉහළ පෙළේ ශ්රිතයක් හෝ ක්රමයක් ඇත, එය අරාව සඳහා එම අරමුණ ඇත, නමුත් වැඩි ක්රියාකාරීත්වයක් සහ සිහින් සින්ටැක්ස් ඇත, එය 'forEach' ලෙස හැඳින්වේ: Array.prototype.forEach(function(element, index, array) {} );
2.) අරා සෑම විටම දිග ඇති, නමුත් for...in
සහ forEach
ඇති ඕනෑම අගය සඳහා ක්රියාත්මක කරන්නේ නෑ 'undefined'
අර්ථ අගය ඇති බව දර්ශක සඳහා පමණක්. එබැවින් ඔබ එක් අගයක් පමණක් පවරන්නේ නම්, මෙම ලූප මඟින් එක් වරක් පමණක් ශ්රිතයක් ක්රියාත්මක කරනු ඇත, නමුත් අරාව ගණනය කර ඇති බැවින්, එය සැමවිටම අර්ථ දක්වා ඇති ඉහළම දර්ශකය දක්වා දිගක් ඇත, නමුත් මේවා භාවිතා කරන විට එම දිග නොදැනේ. ලූප.
3.) ලූප් සඳහා වන ප්රමිතිය ඔබ පරාමිතීන් තුළ අර්ථ දක්වන වාර ගණනක් මෙන් ශ්රිතයක් ක්රියාත්මක කරනු ඇති අතර, අරාව අංකනය කර ඇති බැවින්, ඔබට ශ්රිතයක් ක්රියාත්මක කිරීමට අවශ්ය වාර ගණන නිර්වචනය කිරීම වඩාත් අර්ථවත් කරයි. අනෙක් ලූප මෙන් නොව, for for loop හට අගය අර්ථ දක්වා තිබුණත් නැතත් අරාවෙහි සෑම දර්ශකයක් සඳහාම ශ්රිතයක් ක්රියාත්මක කළ හැකිය.
සාරාංශයක් ලෙස, ඔබට ඕනෑම ලූපයක් භාවිතා කළ හැකිය, නමුත් ඒවා ක්රියා කරන ආකාරය ඔබ මතක තබා ගත යුතුය. විවිධ ලූපයන් පුනරුච්චාරණය කරන කොන්දේසි, ඒවායේ වෙනම ක්රියාකාරිත්වය සහ විවිධ අවස්ථා සඳහා ඒවා අඩු හෝ වැඩි වශයෙන් සුදුසු බව වටහා ගන්න.
එසේම, පොදුවේ ලූපයට forEach
වඩා ක්රමවේදය භාවිතා කිරීම වඩා හොඳ භාවිතයක් ලෙස සැලකිය හැකිය for...in
, මන්ද එය ලිවීමට පහසු වන අතර වැඩි ක්රියාකාරීත්වයක් ඇත, එබැවින් ඔබට මෙම ක්රමය සහ ප්රමිතිය පමණක් භාවිතා කිරීමේ පුරුද්ද ඇති කර ගැනීමට අවශ්ය විය හැකිය, නමුත් ඔබේ අමතන්න.
පළමු ලූප දෙක ක්රියාත්මක කරන්නේ එක් වරක් පමණක් console.log ප්රකාශයන් බව පහත බලන්න, ලූප් සඳහා වන ප්රමිතිය මඟින් ශ්රිතය නිශ්චිතව දක්වා ඇති වාර ගණනක් ක්රියාත්මක කරයි, මේ අවස්ථාවේ දී, array.length = 6.
var arr = [];
arr[5] = 'F';
for (var index in arr) {
console.log(index);
console.log(arr[index]);
console.log(arr)
}
// 5
// 'F'
// => (6) [undefined x 5, 6]
arr.forEach(function(element, index, arr) {
console.log(index);
console.log(element);
console.log(arr);
});
// 5
// 'F'
// => Array (6) [undefined x 5, 6]
for (var index = 0; index < arr.length; index++) {
console.log(index);
console.log(arr[index]);
console.log(arr);
};
// 0
// undefined
// => Array (6) [undefined x 5, 6]
// 1
// undefined
// => Array (6) [undefined x 5, 6]
// 2
// undefined
// => Array (6) [undefined x 5, 6]
// 3
// undefined
// => Array (6) [undefined x 5, 6]
// 4
// undefined
// => Array (6) [undefined x 5, 6]
// 5
// 'F'
// => Array (6) [undefined x 5, 6]