js数据类型之对象object类型(数组与自定义对象)
对象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}