N予備校「プログラミング入門Webアプリ」コースを受講しています。
今回は第3章4,5節です。
ライブラリを利用する
:::note require: 必要なモジュールだけをメモリに記録する :::CSVを読み込む
'use strict';
//FileSystem Module
const fs = require('fs');
//ReadLine Module
const readline = require('readline');
//ReadStream from CSV
const rs = fs.createReadStream('./popu-pref.csv');
//ReadLine from rs
const rl = readline.createInterface({input:rs, output:{}});
//DataMap key: 都道府県 value: 集計データのオブジェクト
const prefectureDataMap = new Map();
//line Event
// function(lineString){}
rl.on('line', lineString=>{
//配列として取得
const columns = lineString.split(',');
//年
const year = parseInt(columns[0]);
//都道府県
const prefecture = columns[1];
//人口
const popu = parseInt(columns[3]);
//2010年 と 2015年を抽出
if(year === 2010 || year === 2015){
//DataMapに都道府県が存在するかチェック
let value = prefectureDataMap.get(prefecture);
if(!value){
//存在しない場合、valueを初期化
value ={
//2010年人口
popu10: 0,
//2015年人口
popu15: 0,
//変化率
change: null
};
}
if(year === 2010){
value.popu10 = popu;
}
if(year === 2015){
value.popu15 = popu;
}
//DataMap に追加
prefectureDataMap.set(prefecture, value);
}
})
//close Event
rl.on('close', ()=>{
//変化率
for(let [key, data] of prefectureDataMap){
data.change = data.popu15 / data.popu10;
}
//配列をソート 比較元(pair1)と比較先(pair2)
const rankingArray = Array.from(prefectureDataMap).sort((pair1, pair2) =>{
//pair1[0], pair2[0]は都道府県(key)
//pair1[1], pair2[1]は連想配列のオブジェクト
//変化率を降順
return pair2[1].change - pair1[1].change;
});
const rankingStrings = rankingArray.map(([key, data], num) =>{
let rank = num + 1;
return `第 ${rank} 位: ${key} : ${data.popu10} => ${data.popu15} 変化率: ${data.change}`;
})
console.log(rankingStrings);
})
on
メソッド:関数をイベント登録する。AddHandlerみたいなもの?
parseInt
: 整数値へ変換。CInt。
map
: Array の要素それぞれを、与えられた関数を適用した内容に変換する。
yarn
:::note Node.jsのためのパッケージマネージャ 依存関係にあるパッケージのインストールも行ってくれる。 :::インストール
curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version 1.21.1
グローバルインストール: Node.js の実行環境自体に npm パッケージをインストール
ローカルインストール: 現在のディレクトリにのみインストール
他のディレクトリから利用することは出来ない。
パッケージ
``` yarn add パッケージ名 ``` npmパッケージのインストール。 ローカルのフォルダを指定してインストールできる。yarn init
npmパッケージ化。package.jasonを作成する。
- name : パッケージ名
- version : バージョン
- description : 説明
- entry point : ライブラリとして読み込まれるJSファイル
- repository url : Gitリポジトリに公開する際のURL
- author : npmに登録された際の著者名
- license : デフォルトはMITライセンス
- private : npmパッケージを公開するかどうか
パッケージ化するスクリプト
'use strict';
function add(numbers){
let result = 0;
for(let num of numbers){
result = result + num;
}
return result;
}
function multi(numbers){
let result = 1;
for(let num of numbers){
result = result * num;
}
return result;
}
module.exports = {
add, multi
};
module exports ={}
オブジェクトのプロパティとして関数を登録