مرکزی مواد پر جائیں
ماڈیول 8 · سبق 2 از 4کورس میں 30/32~15 min
ماڈیول اسباق (2/4)

چیلنج: CSV تجزیہ کار

CSV فارمیٹ (کوما سے الگ کردہ اقدار) ہر جگہ ہے: ایکسل سے برآمدات، ڈیٹا بیس ڈمپ، کمانڈ لائن ٹولز سے آؤٹ پٹ۔ اس کی تجزیہ کرنا ایک چھوٹا چیلنج ہے جو تقسیم، نقشہ، کو یکجا کرتا ہے۔ ڈسٹرکچرنگ، اور آبجیکٹ کنسٹرکشن۔

فارمیٹ

ایک کم سے کم CSV ایک ملٹی لائن سٹرنگ ہے: پہلی قطار ہیڈر (کالم کے نام) ہے، پھر ایک قطار فی ریکارڈ کوما سے الگ کیے گئے فیلڈز کے ساتھ۔

Code
nome,eta,citta
Alice,30,Roma
Bob,25,Milano

کلاسک مقصد اسے اشیاء کی ایک صف میں تبدیل کرنا ہے:

JS
[
  { nome: 'Alice', eta: '30', citta: 'Roma' },
  { nome: 'Bob', eta: '25', citta: 'Milano' },
];

3 قدمی نسخہ

  1. لائنوں کے ذریعے سٹرنگ کو **تقسیم کریں: csv.split('\n') 2۔ ہیڈر کی قطار کو **اقتباس کریں: پہلی لائن، کوما سے تقسیم
  2. نقشہ ہر بقیہ لائن کو کسی شے کے لیے، ہر فیلڈ کو مماثل ہیڈر کے ساتھ جوڑ کر
JS
function parseCSV(csv) {
  const righe = csv.split('\n');
  const intestazione = righe[0].split(',');
  return righe.slice(1).map((riga) => {
    const campi = riga.split(',');
    const record = {};
    intestazione.forEach((nome, i) => {
      record[nome] = campi[i];
    });
    return record;
  });
}

مزید جدید متبادل:

JS
const record = Object.fromEntries(intestazione.map((nome, i) => [nome, campi[i]]));

تبدیل کرنے والی اقسام

تجزیہ شدہ فیلڈز ہمیشہ سٹرنگ ہوتے ہیں۔ اگر آپ جانتے ہیں کہ کچھ کالم نمبر ہیں:

JS
record.eta = Number(record.eta);

یا ایک چھوٹا سا "اسکیما" لکھیں:

JS
const numeriche = new Set(['eta', 'prezzo']);
intestazione.forEach((nome, i) => {
  const v = campi[i];
  record[nome] = numeriche.has(nome) ? Number(v) : v;
});

اسے آزمائیں

ورزش#js.m8.l2.e1
کوششیں: 0لوڈ ہو رہا ہے…

`parseCSV(csv)` کی وضاحت کریں جو CSV سٹرنگ لیتا ہے (پہلی قطار = ہیڈر، کوما بطور جداکار)۔ ہیڈر کیز کے ساتھ اشیاء کی ایک صف واپس کریں۔ تمام قدریں تار کے طور پر رہتی ہیں۔ خالی قطاروں کو نظر انداز کریں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

نئی لائن پر تقسیم، پہلی قطار = ہیڈر، باقی پر نقشہ، Object.fromEntries۔

3 کوششوں کے بعد حل دستیاب ہے۔

ورزش کا جائزہ لیں۔

ورزش#js.m8.l2.e2
کوششیں: 0لوڈ ہو رہا ہے…

`columnMean(csv, columnName)` کی وضاحت کریں جو CSV کو پارس کرتا ہے، کالم کی قدروں کو اعداد میں تبدیل کرتا ہے، اور ان کا اوسط (ایک عدد) لوٹاتا ہے۔ اگر کوئی ڈیٹا قطاریں نہیں ہیں تو 0 واپس کریں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

کالم انڈیکس تلاش کریں، نقشہ کی قطاریں → نمبر، رقم کو کم کریں، لمبائی سے تقسیم کریں۔

3 کوششوں کے بعد حل دستیاب ہے۔