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 = [ |