對象object(數組與自定義對象)
JavaScript 中的所有事物都是對象:字符串、數值、數組、函數...此外,JavaScript 允許自定義對象。
JavaScript 提供多個內建對象,比如 String、Date、Array 等等。
對象只是帶有屬性和方法的特殊數據類型。
數組
// 數組對象的作用是:使用單獨的變量名來存儲一系列的值。類似於Python中的列表。
var l = [11,'gary',true,11.11]; // 可存儲不同類型的元素
typeof l
'object' // 數據類型為對象object
l[1]; // 支持索引取值
'gary'
l[-1]; // 但是不支持負數
常用方法
方法 | 說明 |
---|---|
.length | 數組的大小 |
.push(ele) | 尾部追加元素 |
.pop() | 獲取尾部的元素 |
.unshift(ele) | 頭部插入元素 |
.shift() | 頭部移除元素 |
.slice(start, end) | 切片 |
.reverse() | 反轉 |
.join(seq) | 將數組元素連接成字符串 |
.concat(val, ...) | 連接數組 |
.sort() | 排序 |
.forEach() | 將數組的每個元素傳遞給回調函數 |
.splice() | 刪除元素,並向數組添加新元素。 |
.map() | 返回一個數組元素調用函數處理后的值的新數組 |
演示:
准備一個數組:
var ll = [11,33,22,44,66,55];
1、數組的大小.length
ll.length;
6
2、尾部追加元素.push()
ll.push(99);
[11, 33, 22, 44, 66, 55, 99]
3、獲取尾部元素.pop()
ll.pop();
99
4、頭部增加元素.unshift()
ll.unshift(12);
[12, 11, 33, 22, 44, 66, 55]
5、頭部移除元素.shift()
ll.shift();
12
ll
(6) [11, 33, 22, 44, 66, 55]
6、切片.slice()
ll.slice(0,3);
[11, 33, 22]
7、反轉.reverse()
ll.reverse()
[55, 66, 44, 22, 33, 11]
8、拼接成字符串.join() // 與python相反
ll.join('$'); // 以$作為分隔符拼接
'55$66$44$22$33$11'
9、連接數組.concat(相當於python中的extend)
ll.concat([32,34,12]);
[55, 66, 44, 22, 33, 11, 32, 34, 12] // 連接需要有一個變量接收不修改原數組的元素
10、排序.sort()
ll.sort();
[11, 22, 33, 44, 55, 66]
11、將數組的每個元素傳遞給回調函數.forEach()
var l2 = [11,22,33,44,55,66]; // 定義一個新的數組
格式:l2.forEach(function(形參){函數體代碼},l2);
一個參數:l2.forEach(function(value){console.log(value)},l2); // console.log相當於python中的print 打印
11
22
33
44
55
66
// 解釋:將l2數組的元素循環交給function函數的參數讓function函數代碼塊做處理
兩個參數:l2.forEach(function(value,index){console.log(value,index)},l2);
11 0
22 1
33 2
44 3
55 4
66 5
// 第一個參數打印的是元素值,第二個參數打印的是索引值
三個參數:l2.forEach(function(value,index,arr){console.log(value,index,arr)},l2);
11 0 (6) [11, 22, 33, 44, 55, 66]
22 1 (6) [11, 22, 33, 44, 55, 66]
33 2 (6) [11, 22, 33, 44, 55, 66]
44 3 (6) [11, 22, 33, 44, 55, 66]
55 4 (6) [11, 22, 33, 44, 55, 66]
66 5 (6) [11, 22, 33, 44, 55, 66]
// 第一個參數返回的是元素值,第二個參數返回的是索引值,第三個是元素所在的元組。
12、刪除元素,並向數組添加新元素.splice()
兩個參數情況:刪除指定范圍的元素(同樣遵循顧頭不顧尾)
eg:ll.splice(0,3);
(3) [11, 22, 33] // 刪除前三位
ll
(3) [44, 55, 66] // 剩下后三位
三個參數情況:刪除指定范圍元素並添加新元素
eg:ll.splice(0,1,77); // 刪除第一位
[44]
ll
(3) [77, 55, 66] // 刪除第一位44並在這個位置添加了77
13、返回一個數組元素調用函數處理后的值的新數組.map()
// map 和 forEach相仿
l2.map(function(value,index){return value*2},l2); // 映射
(6) [22, 44, 66, 88, 110, 132]
自定義對象
// 自定義對象可以看作是python中的字典,但是js中的自定義對象要比python里面的字典操作起來更加方便
// 創建自定義對象
var d1 = {'name':'gary','age':18};
typeof d1;
'object'
d1['name'];
'gary'
d1.name; // 可通過點(.) 的方式取值更加方便
'gary'
d1.age;
18
// 支持for循環:暴露給外界的也是key鍵
for(var i in d){
console.log(i,d[i])
};
// 第二種創建自定義對象的方法 使用關鍵字:new
eg:
var d2 = new Object() // 創造出來為空字典
d2.name='gary'; // 添加鍵值對 'name':'gary'
d2['age'] = 18; // 添加鍵值對 'age':18
d2 // 查看自定義對象:{name:'gary',age:18}