1. 对象
1.1 基础
object 对象是 复杂数据类型
- 对象是一个无序的数据集合
- 数据集合:可以存储多个数据的集合
- 对象数据的存储方式:键值对
- 一个键名对应一个值
- 举个栗子:name:"张三"
- name是键名, '张三’ 键值
1.2 创建方式
1. 字面量:
var obj = { }
2. 内置构造函数:
var obj = new Object()
1.3 注意
对象中的键名只能是字符串(或Symbol)数据类型
对象中的键值可以是任意数据类型
对象中的键名不能重复
对象的书写 {} 就是对象数据,在{}中的键值对就是对象的数据,多个键值对通过逗号分隔
1.4 用法
1. 点语法 obj.x obj.y
2. 数组关联法
无序的数据集合
- 但是键名是数字字符串会按大小排序,不是按写入顺序,数字排前面
2. 数组
2.1 操作数组的方法
- 什么是数组
+ 是一个有序的数据集合
+ 是一个引用数据类型(复杂数据类型/地址数据类型)
- 数组的一个属性
+ length,值是 number 数据类型
+ 可以利用 for 循环来遍历数组
+ 数组里面的每一个成员依靠索引来获取
- 数组常用方法
+ pop() 删除最后一个数据
+ push() 数据添加到最后
+ shift() 删除最前面一个数据
+ unshift() 数据添加到最前面
+ splice() 删除 改变原数组 返回删除元素组成的新数组
+ reverse()
+ sort()
+ 直接使用 sort()
+ sort(function (a, b) { return a - b })
+ join() 拼接 空字符串合并,不传参数默认逗号
+ concat() 合并
+ slice(a,b) 提取,以新的字符串返回,不改变原数组,包前不包后
2.2 冒泡排序
var arr = [1, 3, 5, 6, 4, 2, 9, 8, 7]
for (var i = 0; i < arr.length - 1; i++) {
for (var j = 0; j < arr.length - 1- i; j++) {
if (arr[j] > arr[j + 1]) {
var tmp = arr[j]
arr[j] = arr[j + 1]
arr[j + 1] = tmp
}
}
}
2.3 选择排序
var arr = [1, 3, 5, 6, 4, 2, 9, 8, 7]
for (var i = 0; i < arr.length - 1; i++) {
var minIndex = i
for (var j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j
}
}
if (minIndex !== i) {
var tmp = arr[minIndex]
arr[minIndex] = arr[i]
arr[i] = tmp
}
}
3 ES5
3.1 数组的ES5方法
+ indexOf()
+ 查找参数在数组中的索引 不存在则返回-1
+ forEach(function (item, index, arr) {})
+ map(function (item, index, arr) {})
+ filter(function (item, index, arr) {})
+ every(function (item, index, arr) {})
+ some(function (item, index, arr) {})
+ reduce(function(prev,item,index,arr),init)
3.2 字符串
3.2.1 字符串是一个临时包装数据类型
+ 就是在使用的时候回转换成 new 出来的样子(字符串对象)
+ 使用完毕以后有转换回去了
+ length 属性可以使用,值是一个 number 数据类型
+ 可以使用 for 循环遍历
+ 使用索引拿到字符串中的每一个字符
3.2.2 字符串的常用方法
+ charAt()
+ charCodeAt()
+ indexOf()
+ substring()
+ substr()
+ toLowerCase()
+ toUpperCase()
+ split()
+ slice()
+ concat()
4. 数据类型
### 数据类型的存储
+ 基本数据类型存储再栈里面
+ 引用数据类型,数据在堆里面,地址在栈里面
### 数据类型之间的赋值关系
+ 基本数据类型赋值以后两个变量没有关系
+ 引用数据类型赋值以后,两个变量操作的是同一个对象空间
+ 函数的实参和形参之间的赋值也是一种变量赋值关系
5. Math
#### 操作数字的方法
+ random()
+ round()
+ ceil()
+ floor()
+ pow()
+ sqrt()
+ max()
+ min()
+ abs()
+ PI
#### 随机数
```javascript
function fn(a, b) {
return Math.floor(Math.random() * (b - a + 1)) + a
}
```
#### 保留几位小数
+ toFixed()
+ 返回的是一个字符串
#### 转换进制
+ toString(你转换成多少进制)
+ parseInt(数字,你把数字当成多少进制)
+ 都是转成十进制数字返回
6.Date
#### 操作时间
- 获取一个时间对象
+ new Date()
+ 传递 2 ~ 6 个数字
- YYYY
- MM (0 表示1月,11 表示 12月)
- DD
- HH
- mm
- ss
+ 传递一个字符串的形式
- `/` || `.` || `-` 链接都可以
- 小时分钟秒的时候是用 `:` 链接
- 0 表示一月 11 表示十二月
#### 时间对象的操作方法
+ getFullYear()
+ getMonth()
+ getDate()
+ getHours()
+ getMinutes()
+ getSeconds()
+ getDay()
+ getTime()
- 补充一个设置时间对象的方法
+ setFullYear()
+ setMonth()
+ setDate()
+ setHours()
+ setMinutes()
+ setSeconds()
+ setTime()
- 时间差的思路
+ 获取两个时间点的时间对象
+ 获取到两个时间点的时间戳
+ 时间戳相减
+ 自己通过算数的方式算出多少天多少小时多少分钟多少秒