From 1503a33bb0a551084213ba50ed2b79297decae1f Mon Sep 17 00:00:00 2001 From: ShokiYokota Date: Tue, 17 Oct 2023 22:47:52 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=E3=83=A9=E3=83=B3=E3=82=AD=E3=83=B3?= =?UTF-8?q?=E3=82=B0=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 | 46 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/app.js b/app.js index ad9a93a..43d8816 100644 --- a/app.js +++ b/app.js @@ -1 +1,45 @@ -'use strict'; +'use strict' +const fs = require('node:fs') +const readline = require('node:readline') +const rs = fs.createReadStream('./popu-pref.csv') +const rl = readline.createInterface({ input: rs }) +// key: 都道府県 value: 集計データのオブジェクト +const prefectureDataMap = new Map() + +rl.on('line', (lineString) => { + const columns = lineString.split(',') + const year = parseInt(columns[0]) + const prefecture = columns[1] + const population = 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 = population + } + if (year === 2021) { + value.after = population + } + 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 rankigStrings = rankingArray.map(([key, value]) => { + return `${key}: ${value.before} => ${value.after} 変化率:${value.change}` + }) + console.log(rankigStrings) +}) From dd60939e08fb65ad0f12b8502d62399a9c29acfb Mon Sep 17 00:00:00 2001 From: ShokiYokota Date: Tue, 17 Oct 2023 23:11:45 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=E6=B8=9B=E3=81=A3=E3=81=9F=E5=89=B2?= =?UTF-8?q?=E5=90=88=E3=83=A9=E3=83=B3=E3=82=AD=E3=83=B3=E3=82=B0=E3=81=AB?= =?UTF-8?q?=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app.js b/app.js index 43d8816..7ddb695 100644 --- a/app.js +++ b/app.js @@ -36,10 +36,12 @@ rl.on('close', () => { value.change = value.after / value.before } const rankingArray = Array.from(prefectureDataMap).sort((pair1, pair2) => { - return pair2[1].change - pair1[1].change + return pair1[1].change - pair2[1].change }) - const rankigStrings = rankingArray.map(([key, value]) => { - return `${key}: ${value.before} => ${value.after} 変化率:${value.change}` + const rankigStrings = rankingArray.map(([key, value], index) => { + return `${index + 1}位 ${key}: ${value.before} => ${value.after} 変化率:${ + value.change + }` }) console.log(rankigStrings) })