మాడ్యూల్ పాఠాలు (2/4)
ఛాలెంజ్: CSV పార్సర్
CSV ఫార్మాట్ (కామాతో వేరు చేయబడిన విలువలు) ప్రతిచోటా ఉంటుంది: Excel నుండి ఎగుమతులు, డేటాబేస్ డంప్లు, కమాండ్-లైన్ సాధనాల నుండి అవుట్పుట్. దీన్ని అన్వయించడం స్ప్లిట్, మ్యాప్, కలిపి ఒక చిన్న సవాలు. విధ్వంసం, మరియు వస్తు నిర్మాణం.
ఫార్మాట్
కనిష్ట CSV అనేది బహుళ-లైన్ స్ట్రింగ్: మొదటి అడ్డు వరుస హెడర్ (కాలమ్ పేర్లు), తర్వాత ఒకటి కామాలతో వేరు చేయబడిన ఫీల్డ్లతో రికార్డ్కు వరుస.
nome,eta,citta
Alice,30,Roma
Bob,25,Milano
క్లాసిక్ లక్ష్యం దానిని వస్తువుల శ్రేణిగా మార్చడం:
[
{ nome: 'Alice', eta: '30', citta: 'Roma' },
{ nome: 'Bob', eta: '25', citta: 'Milano' },
];3-దశల వంటకం
- స్ప్లిట్ లైన్ల వారీగా:
csv.split('\n') - ఎక్స్ట్రాక్ట్ హెడర్ అడ్డు వరుస: మొదటి పంక్తి, కామాతో విభజించబడింది
- మ్యాప్ ఒక వస్తువుకు మిగిలిన ప్రతి పంక్తిని, సరిపోలే హెడర్తో ప్రతి ఫీల్డ్ను జత చేస్తుంది
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;
});
}మరిన్ని ఆధునిక ప్రత్యామ్నాయాలు:
const record = Object.fromEntries(intestazione.map((nome, i) => [nome, campi[i]]));మార్పిడి రకాలు
అన్వయించబడిన ఫీల్డ్లు ఎల్లప్పుడూ తీగలు. కొన్ని నిలువు వరుసలు సంఖ్యలు అని మీకు తెలిస్తే:
record.eta = Number(record.eta);లేదా చిన్న "స్కీమా" వ్రాయండి:
const numeriche = new Set(['eta', 'prezzo']);
intestazione.forEach((nome, i) => {
const v = campi[i];
record[nome] = numeriche.has(nome) ? Number(v) : v;
});దీనిని ప్రయత్నించండి
CSV స్ట్రింగ్ (మొదటి వరుస = హెడర్, కామాలను సెపరేటర్గా) తీసుకునే `parseCSV(csv)`ని నిర్వచించండి. హెడర్ కీలతో వస్తువుల శ్రేణిని తిరిగి ఇవ్వండి. అన్ని విలువలు స్ట్రింగ్లుగా ఉంటాయి. ఖాళీ అడ్డు వరుసలను విస్మరించండి.
సూచనను చూపించు
న్యూలైన్లో విభజించబడింది, మొదటి వరుస = హెడర్, మిగిలిన వాటిపై మ్యాప్, Object.fromEntries.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
వ్యాయామం సమీక్షించండి
CSVని అన్వయించే, నిలువు వరుస విలువలను సంఖ్యలుగా మార్చే మరియు వాటి సగటు (సంఖ్య)ని అందించే `columnMean(csv, columnName)`ని నిర్వచించండి. డేటా అడ్డు వరుసలు లేకుంటే 0ని తిరిగి ఇవ్వండి.
సూచనను చూపించు
కాలమ్ ఇండెక్స్, మ్యాప్ అడ్డు వరుసలు → సంఖ్యను కనుగొనండి, మొత్తానికి తగ్గించండి, పొడవు ద్వారా విభజించండి.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది