मुझे क्यों नहीं मिल रहा है:

[[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