andy0130tw
7/24/2016 - 5:32 PM

彩虹牧場 request 套件參考題目

彩虹牧場 request 套件參考題目

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));
});
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 */);
});

題目敘述

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

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

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

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

提示:

  1. 用陣列的 splitfiltermap 等方法,可以大大簡化程式碼。
  2. FIELDS 依序存放著欄位的代號可供 forEach 直接引用
  3. 如果不會去掉 [...],可以使用寫好的函式 removeBrackets