Skip to content

Instantly share code, notes, and snippets.

@andy0130tw
Last active August 12, 2016 09:20
Show Gist options
  • Save andy0130tw/c4083205d0c97352530b699a175ff1b7 to your computer and use it in GitHub Desktop.
Save andy0130tw/c4083205d0c97352530b699a175ff1b7 to your computer and use it in GitHub Desktop.
彩虹牧場 request 套件參考題目

題目敘述

以下是一份政府的開放資料「104學年度大專校院名錄」,請將這份資料依以下規則轉成 JSON 格式然後印出。

回傳值為一個陣列,每個元素為一個物件,包含以下屬性,值均為字串:

code: 代碼
name: 學校名稱
region: 縣市名稱 (僅保留字串部分)
address: 地址
phone: 電話
url: 網址
type: 體系別 (僅保留字串部分)

「僅保留字串部分」表示將字串前面[...]的部份去掉。
注意檔案的空白行。

提示:

  1. 用陣列的 splitfiltermap 等方法,可以大大簡化程式碼。
  2. FIELDS 依序存放著欄位的代號可供 forEach 直接引用
  3. 如果不會去掉 [...],可以使用寫好的函式 removeBrackets
var request = require('request');
var FIELDS = ['code', 'name', 'region', 'address', 'phone', 'url', 'type'];
function removeBrackets(str) {
return str.replace(/\[.*\]/, '');
}
request.get('http://stats.moe.gov.tw/files/school/104/u1_new.txt', {
encoding: 'utf16le'
}, function(err, result) {
// write your code here...
// result.body will be the string loaded
console.log(/* print the result with JSON.stringify(...) if you are done */);
});
var request = require('request');
var FIELDS = ['code', 'name', 'region', 'address', 'phone', 'url', 'type'];
function removeBrackets(str) {
return str.replace(/\[.*\]/, '');
}
request.get('http://stats.moe.gov.tw/files/school/104/u1_new.txt', {
encoding: 'utf16le'
}, function(err, result) {
var grid = result.body
.split('\r\n')
.filter(function(v, i) {
if (i < 3) return false; // remove the first three lines
return v.trim() != ''; // is totally blank?
})
.map(function(v) {
var arr = v.split('\t');
var obj = {};
FIELDS.forEach(function(field, i) {
if (field == 'region' || field == 'type') {
obj[field] = removeBrackets(arr[i]);
} else {
obj[field] = arr[i];
}
});
return obj;
});
console.log(JSON.stringify(grid));
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment