JaveScript入門篇 - 陣列(Array)與物件(Object)
在前兩篇關於變數的文章中有提到,在 JavaScript 中,除了基本型別以外都可以歸類為物件型別,在這篇文章中就來介紹最基本的物件型別,陣列 Array 與物件 Object
物件 Object
物件可以是零至多個屬性
property的集合每個屬性
property都有自己的值value值可以是基本型別、另一個物件
object、陣列array或函數function使用大括號
{ }建立起新的物件屬性 property 使用冒號
:隔開值value,而值value結尾使用逗號,連接下一個屬性property屬性
property可以透過 “點”.來存取1
2
3
4
5
6
7
8
9
10
11
12
13
14var farm = {
farmer: "卡斯伯", // string
dogs: ['張姆士', '龐的'], // array(object)
chicken: 15, // number
duck: 3,
poultryTotal: function(){
var num = farm.chicken + farm.duck;
console.log(num);
},
"001": "Hello"
}
console.log(farm.farmer); // 卡斯伯
farm.poultryTotal(); // 18屬性也可以透過中括號
[ ]來存取,好處是遇到不合法的 JavaScript 的識別字 (如帶有空白的字串或是數字) 時,不會出現錯誤1
2farm.001; // SyntaxError: Unexpected number
farm["001"]; // "Hello"屬性
property可以透過=“新增” 與delete“刪除”1
2
3
4
5
6
7
8
9var obj = { };
obj.name = '123'; // 新增
obj.name; // '123'
delete obj.name; // 刪除
obj.name; // 刪除屬性後變成 undefined
判斷屬性是否存在
判斷屬性是存在最簡單的方式就是檢查該屬性是不是 undefined
1 | var obj = {}; |
但如果該屬性的值剛好是 undefined,此方法就無效,除了此方法,還有 in 運算子和 hasOwnProperty 方法
1 | var obj = { |
列舉物件 (for ... in)
另一個判斷物件內有什麼屬性的方法就是使用列舉 (for ... in)
1 | var Person = { |
陣列 Array
陣列可以是零至多個元素的集合
陣列內可以是 原始的資料類型、其他陣列
array、函式function或物件object使用中括號
[ ]建立起新的陣列每個元素以逗號
,隔開可以透過
.length來取得陣列長度,而陣列長度是 可以被覆寫 的,如下原來的陣列長度為 3,透過a.length = 1將陣列長度改成 1 後,後面的元素就被移除了,之後再透過a.length = 3將陣列長度改回 3,後面被移除的元素也只會使用undefined來填補1
2
3
4
5
6
7
8var a = ["apple", "boy", "cat"];
a.length; // 3
a.length = 1;
console.log(a); // ["apple"]
a.length = 3;
console.log(a); // ["apple", undefined, undefined]陣列的索引是從
0開始計算的1
2array = ["a", "b", "c"];
array[0] = "a";.push('要新增的資料')新增資料透過
.push()可以在陣列末端新增新元素1
2
3
4var array = ['a', 'b', 'c'];
array.push('d');
console.log(array); // ['a', 'b', 'c', 'd'].splice('從第幾筆資料開始','要刪除幾筆資料')刪除資料透過
.splice()可以刪除陣列中指定資料以後的資料1
2
3
4var array = ['a', 'b', 'c']
array.splice('1','2'); // ['b', 'c']
console.log(array); // ['a']可以直接指定改變元素
1
2
3
4var array = ['a', 'b', 'c'];
array[1] = 'B';
console.log(array); // ['a', 'B', 'c']除了
.push外,陣列還有許多語法,可以參考以下連結使用
typeof來判斷陣列和物件都會顯示object,我們可以使用.inArray來判斷此變數是陣列而非物件1
2
3
4
5
6
7
8Array.isArray([]); // true
Array.isArray([1]); // true
Array.isArray(new Array()); // true
Array.isArray(); // false
Array.isArray({}); // false
Array.isArray(null); // false
Array.isArray(undefined); // false
陣列 + 物件
陣列和物件時常會混和著使用,陣列透過中括號 [ ],而物件透過點 . 來撈出資料
1 | var farms = [ |