मुझे क्यों नहीं मिल रहा है:
[[0,0],[0,0,0,0],[0,0,0,0,0,0]] //Creates a 2-D array
एम पंक्तियों और शून्य के एन कॉलम के साथ // एम-वें पंक्ति को न्यूएरे में जोड़ता है // कॉलम बनाने के लिए एन जीरो को वर्तमान पंक्ति में धकेलता है // वर्तमान पंक्ति को धक्का देता है, जिसमें अब एन शून्य है, सरणी में
function zeroArray(m, n) {
let newArray = [];
let row = [];
for (let i = 0; i < m; i++) {
for (let j = 0; j < n; j++) {
row.push(0);
}
newArray.push(row);
}
return newArray;
}
let matrix = zeroArray(3, 2);
console.log(matrix);
1
Abhishek Singh
13 अगस्त 2020, 01:39
2 जवाब
सबसे बढ़िया उत्तर
जब आप newArray.push(row)
करते हैं, तो यह row
की प्रतिलिपि नहीं बनाता है। तो हर बार जब आप ऐसा करते हैं, तो आप उसी सरणी के संदर्भ को आगे बढ़ा रहे हैं, और newArray
के सभी तत्व समान हैं।
उसमें बदलें
newArray.push([...row]);
सरणी की एक प्रति बनाने के लिए।
function zeroArray(m, n) {
let newArray = [];
let row = [];
for (let i = 0; i < m; i++) {
for (let j = 0; j < n; j++) {
row.push(0);
}
newArray.push([...row]);
}
return newArray;
}
let matrix = zeroArray(3, 2);
console.log(matrix);
या आप लूप के माध्यम से हर बार एक नया row
सरणी बना सकते हैं।
function zeroArray(m, n) {
let newArray = [];
for (let i = 1; i <= m; i++) {
let row = Array(i * n);
row.fill(0);
newArray.push(row);
}
return newArray;
}
let matrix = zeroArray(3, 2);
console.log(matrix);
1
Barmar
13 अगस्त 2020, 01:53
मैपिंग कॉलबैक के साथ Array.from
का उपयोग करना एक आसान समाधान होगा।
function zeroArray(m, n){
return Array.from({length: m}, (_,i)=>Array((i+1)*n).fill(0));
}
console.log(zeroArray(3,2));
0
hev1
13 अगस्त 2020, 02:09