47 lines
1.4 KiB
Markdown
47 lines
1.4 KiB
Markdown
|
---
|
||
|
title: Use Caution When Reinitializing Variables Inside a Loop
|
||
|
localeTitle: استخدام الحذر عند Reinitializing متغيرات داخل حلقة
|
||
|
---
|
||
|
## استخدام الحذر عند Reinitializing متغيرات داخل حلقة
|
||
|
|
||
|
* يجب حل هذا التحدي من خلال إعادة تعريف نطاق `row[]` .
|
||
|
* فيما يلي مثال على المصفوفة المطلوبة.
|
||
|
|
||
|
`[
|
||
|
[0][0],
|
||
|
[0][0],
|
||
|
[0][0]
|
||
|
]
|
||
|
`
|
||
|
|
||
|
* ومع ذلك ، فإن المصفوفة الحالية - الموضحة أدناه - بعيدة عن المصفوفة المرغوبة
|
||
|
|
||
|
`[
|
||
|
[0][0][0][0][0][0],
|
||
|
[0][0][0][0][0][0],
|
||
|
[0][0][0][0][0][0]
|
||
|
]
|
||
|
`
|
||
|
|
||
|
* يحدث هذا الخطأ بسبب `row[]` صف يتم الإعلان عنه كمتغير عمومي خارج الحلقة المتداخلة.
|
||
|
* ومع ذلك ، لملء المصفوفة بشكل صحيح يجب إعادة تعيين `row[]` بعد كل تكرار للحلقة الخارجية.
|
||
|
|
||
|
## حل
|
||
|
|
||
|
`function zeroArray(m, n) {
|
||
|
let newArray = [];
|
||
|
for (let i = 0; i < m; i++) {
|
||
|
let row = []; /* <----- row has been declared inside the outer loop.
|
||
|
Now a new row will be initialised during each iteration of the outer loop allowing
|
||
|
for the desired matrix. */
|
||
|
for (let j = 0; j < n; j++) {
|
||
|
|
||
|
row.push(0);
|
||
|
}
|
||
|
newArray.push(row);
|
||
|
}
|
||
|
return newArray;
|
||
|
}
|
||
|
let matrix = zeroArray(3, 2);
|
||
|
console.log(matrix);
|
||
|
`
|