From 6a659cb8020de47d8087029a02c0d319f99d1c60 Mon Sep 17 00:00:00 2001 From: yako123987 Date: Sun, 3 May 2026 15:05:14 +0900 Subject: [PATCH] =?UTF-8?q?=E3=83=A9=E3=83=B3=E3=82=AD=E3=83=B3=E3=82=B0?= =?UTF-8?q?=E3=81=AE=E5=AE=9F=E8=A3=85=E5=AE=8C=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.js | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/app.js b/app.js index ad9a93a..8a8c7d7 100644 --- a/app.js +++ b/app.js @@ -1 +1,45 @@ 'use strict'; +const fs=require('node:fs'); +const readline=require('node:readline'); +const re =fs.createReadStream('./popu-pref.csv'); +const rl =readline.createInterface({input:re}); +const prefectureDataMap=new Map(); +rl.on('line',lineString =>{ + const columns=lineString.split(','); + const year=parseInt(columns[0]); + const prefecture=columns[1]; + const popu=parseInt(columns[3]); + if(year===2016 || year===2021){ + let value=null; + if(prefectureDataMap.has(prefecture)){ + value=prefectureDataMap.get(prefecture); + } else{ + value={ + before: 0, + after: 0, + change: null + }; + } + if(year===2016){ + value.before=popu; + } + if(year===2021){ + value.after=popu; + } + prefectureDataMap.set(prefecture,value); + } +}); +rl.on('close',() =>{ + for(const[key,value] of prefectureDataMap){ + value.change=value.after /value.before; + } + const rankingArray=Array.from(prefectureDataMap).sort((pair1,pair2) =>{ + return pair2[1].change - pair1[1].change; + }); + const rankingStrings=rankingArray.map(([key,value]) => { + return `${key}: ${value.before}=>${value.after}変化率: ${value.change}`; + }); + console.log(rankingStrings); +} ) + +