wordpress_blog

This is a dynamic to static website.

JavaScript 複習03

JavaScript 必修篇 – 前端修練全攻略

陣列教學

為什麼要學陣列物件?

資料集合。

筆刷工具介紹

Mac 電腦 – ScreenBrush

陣列寫法教學

// 陣列 array
let colors = ['blue', 'red', 'black'];

陣列不只能放字串,也能放數字與混合資料

// 陣列 array
let ary = ['blue', 5, false];
console.log(ary);

let books = [5, 30, 400, 100];
console.log(books);

let data = [];
console.log(data);
  • 字串
  • 數字
  • 混合
  • 空的

陣列讀取教學

陣列第一筆資料是從 0 開始。

// 陣列 array
let colors = ['blue', 'red', 'black'];

// 讀取陣列資料,瞭解陣列長度
// 陣列資料從0開始
// 第一筆資料: 0
// 第二筆資料: 1
// 第三筆資料: 2
console.log(colors[0]);
console.log(colors[1]);
console.log(colors[2]);

讀取陣列資料,並賦予新變數流程

// 陣列 array
let colors = ['blue', 'red', 'black'];

let likeColor = colors[2];

console.log(likeColor);

length 讀取陣列長度流程

// 陣列 array
let colors = ['blue', 'red', 'black', 'pink'];

console.log('colors.length:' + colors.length);

let colorsNum = colors.length;
console.log('colorsNum:' + colorsNum);

陣列預設寫入資料

// 陣列 array
let colors = [];

// 寫入
colors[0] = "blue";

colors[4] = "pink";

console.log(colors);
console.log(colors.length);

push 寫入資料流程

新增 push 最後一筆資料

// 陣列 array
let colors = ['blue', 'red', 'black'];

colors.push('pink');
colors.push('yellow');

console.log(colors);

unshift 寫入資料流程

新增 unshift 最前一筆資料

// 陣列 array
let colors = ['blue', 'red', 'black'];

colors.unshift('pink');

console.log(colors);
  • push – 新增在最後一筆資料
    例如: 列表
  • unshift 新增在最前一筆資料
    例如: 留言板

pop 與 shift 刪除資料

刪除 pop 最後一筆資料

刪除 shift 最前一筆資料

// 陣列 array
let colors = ['blue', 'red', 'black'];

colors.shift();
colors.shift();
colors.shift();

console.log(colors);

splice 刪除指定資料

第一個數字: 起始位置
第二個數字: 要往後刪除幾筆資料

// 陣列 array
let colors = ['blue', 'red', 'black'];

// 第一個數字: 起始位置
// 第二個數字: 要往後刪除幾筆資料

colors.splice(0, 1);

console.log(colors);

其他陣列總結

文件補充

物件教學

為什麼要有物件

寫程式常用物件去撰寫。

物件描述一個東西裡面有哪些資訊。

  • 舉例 – 房子
    游泳池、兩樓、頂樓設施、煙囪、陽台

陣列有幾筆資料在裡面。

物件格式教學

// 物件
// 描述家庭
let home = {
  // 屬性: "值"
  motherName: "Mary",
  fatherName: "Tom",
  dogsNum = 3,
  isWakeUp: false
};

console.log(home);

物件格式寫法

{ 屬性: “值” };

如何讀取物件的值

let home = {
  motherName: "Mary",
  fatherName: "Tom",
  dogsNum: 3,
  isWakeUp: false
};

console.log(home);
console.log(home.motherName);
console.log(home.fatherName);
console.log(home.dogsNum);
console.log(home.isWakeUp);

let tomDogsNum = home.dogsNum;

console.log(tomDogsNum);

新增物件屬性

let home = {};

console.log(home);

home.motherName = "Mary";
home.dogsNum = 3;
home.isWakeUp = false;

console.log(home);

Q: 資料會一起直接組好,還是自己需要去組資料?

兩者都有。

  1. 從別人伺服器抓取完整資料
  2. 網頁上做新增功能

修改物件值

let home = {
  motherName: "Mary",
  fatherName: "Tom",
  dogsNum: 3,
  isWakeUp: false
};

home.motherName = "Jane";
home.dogsNum += 1;
home.dogsNum = home.dogsNum + 1;

console.log(home);

刪除物件資料

let home = {
  motherName: "Mary",
  fatherName: "Tom",
  dogsNum: 3,
  isWakeUp: false
};

delete home.dogsNum;
delete home.motherName;

console.log(home);
console.log(home.motherName);

另一種讀取物件屬性方法

let home = {
  motherName: "Mary",
  fatherName: "Tom",
  dogsNum: 3,
  isWakeUp: false
};

console.log(home["motherName"];
console.log(home['motherName']);

let momName = "motherName";
console.log(home[momName]);

物件讀取資料判斷時間

let home = {
  motherName: "Mary",
  fatherName: "Tom",
  dogsNum: 3,
  isWakeUp: false,
  "001": "hello"
};

// JSON 格式
// 點記法無法讀取特殊字元,例如:數字

console.log(home["motherName"]);
console.log(home["001"]);

陣列與物件整合運用

陣列與物件混合應用

陣列和物件的集合。

透過情境知道何時使用陣列、何時使用物件、以及陣列物件集合在一起該怎樣去有效運用。

// 有兩個水果攤
// 第一個水果攤,老闆 Tom ,香蕉有6個、蘋果有5個、還沒關店
// 第二個水果攤,老闆 John,香蕉有9個,蘋果有8個,還沒關店

// 陣列來說,他都是放幾筆幾筆 [0] [1]

let market = [
  {
    bossName: "Tom",
    bananaNum: 6,
    appleNum: 5,
    isClose: false
  },
  {
    bossName: "John",
    bananaNum: 9,
    appleNum: 8,
    isClose: false
  }
];

console.log(market);
console.log(market.length);

一次搞懂陣列與物件混合讀取教學

  • 陣列 []
    最外層為 [] 中括號的為陣列
    尋找陣列第幾筆,用中括號[]裡面填寫數字尋找
    舉例: console.log(market[0]);
  • 物件 {}
    最外層為 {} 大括號的為物件
    尋找物件裡面屬性的值,用點.找屬性資料
    舉例: console.log(market[0].bossName);
let market = [
  {
    bossName: "Tom",
    bananaNum: 6,
    appleNum: 5,
    isClose: false
  },
  {
    bossName: "John",
    bananaNum: 9,
    appleNum: 8,
    isClose: false
  }
];

console.log(market[0]);

console.log(market[0].bossName);

// 測驗1
console.log(market[1].appleNum);
// 測驗2
console.log(market[0].isClose);

JSON 格式介紹

JavaScript Object Notation (JSON) 為將結構化資料 (structured data) 呈現為 JavaScript 物件的標準格式,常用於網站上的資料呈現、傳輸 (例如將資料從伺服器送至用戶端,以利顯示網頁)。

安裝 JSON 檢視 Chrome 套件

下載 JSON 格式資料

備註:原網站已無提供 JSON 格式,請直接下載上方附件的 JSON 檔案進行練習。

// 下載方式
// 右鍵檢視網頁原始碼,全部複製到自己的程式碼
// 全選 Ctrl + a
// 複製 Ctrl + c

// 方法一 - 在 VS Code 執行
// 方法二 - 使用 Chrome Console 執行

// let data = [{}, {}, {},...];

// console.log(data);
// console.log(data.length);

JSON 讀取方式教學 – 以充電站為例

// let data = [{}, {}, {},...];

console.log(data[0].Charge);
console.log(data[0].Address);
console.log(data[2].Location);

物件裡面還能包物件

let home = {
  motherStatus: {
    age: 30,
    name: "Mary"
  },
  fatherStatus: {
    age: 38,
    name: "Mark"
  },
  dogsNum: 3
};

console.log(home.motherStatus.name);
console.log(home.fatherStatus.age);

物件包物件讀取流程 – 以活動公告 open data 為例

公告 OPEN DATA 網址: JSON 網址

// let data = {paging: {}, entries: [{}, {}, {},...]};

console.log(data.paging);
console.log(data.paging.total);
console.log(data.entries);
console.log(data.entries[1].title);

如何篩選出自己想要的資料格式,並賦予到特定變數上

// let data = {paging: {}, entries: [{}, {}, {},...]};

console.log(data);

let ary = data.entries;

console.log(ary);
console.log(ary.length);
console.log(ary[0].title);

小魔王題目: 複雜 JSON 格式,你/妳撈得到嗎?

高雄旅遊網線上網址: 線上 JSON 網址

// let data = {};

console.log(data);
console.log(data.isImage);
console.log(data.data.XML_Head.Listname);
console.log(data.data.XML_Head.Infos.Info);
console.log(data.data.XML_Head.Infos.Info[0].Name);

物件搭配 if 練習

let tomStatus = {
  name: "Tom",
  age: "30",
  status: ""
};

tomStatus.degree = 36.5;

if(tomStatus.degree >= 37.5) {
  console.log("您不得進入");
  tomStatus.status = "您不得進入";
} else {
  console.log("您可以進入");
  tomStatus.status = "您可以進入";
}

console.log(tomStatus);

陣列物件搭配 if 流程判斷練習

let peopleStatus = [
  {
    name: "Tom",
    age: 30,
    status: ""
  }
];

// 偵測客人體溫
peopleStatus[0].degree = 38.5;

console.log(peopleStatus[0]);

if(peopleStatus[0].degree >= 37.5) {
  peopleStatus[0].status = "您不得進入";
  console.log("您不得進入");
} else {
  peopleStatus[0].status = "您可以進入";
  console.log("您可以進入");
}

console.log(peopleStatus[0]);