数据操作
一、对象
一个大空间存储多个小的内存空间,一个变量中存储多个数据的数据
定义:
var 对象 = { 属性: 值, 属性: 值, ... }
var 对象 = new Object()
基本操作:
设置对象的键值对:
对象.属性名 = 值
对象['属性名'] = 值
如果属性名原本不存在 - 新增
如果属性名原本存在 - 修改/替换
访问对象的值:
对象.属性名
对象['属性名']
删除对象键值对:
delete 对象.属性名
delete 对象['属性名']
对象的特性:
- 对象中的键值对之间是无序的
- 对象中的属性是唯一的
对象的遍历:
for(var key in 对象){
key代表对象中的每个属性
对象[key]
}
注意:如果使用变量代表对象的键,获取值的时候必须使用对象[键]语法
二、数组
概念:一个大空间存储多个小的内存空间,一个变量中存储多个数据的数据
跟对象的区别:数组中的小空间是有顺序的
定义:
var arr = []
var arr = new Array()
注意:只放入一个数字的时候,[]表示数组中有一个元素,new表示有多个空的小空间。
基本操作:
设置数组中的数据:
数组[下标] = 值
访问:
数组[下标]
删除数据(保留小空间):
delete 数组[下标]
长度:
数组.length // 获取数组中元素个数
数组.length = 数字 // 将数组保留多少个小空间
数组的规律:
- 数组的第一个元素下标一定是0
- 数组的最后一个元素下标一定是length-1
遍历:
for(var a = 0; a < arr.length; a++) {
a代表每个元素对应的下标
}
for(var a in arr){
a代表每个元素对应的下标
}
区别:in语法不遍历空的小空间
三、基本类型和引用类型
基本类型:number/string/boolean/undefined/null
引用类型:object/array/function
区别:
基本类型 | 引用类型 | |
---|---|---|
存储 | 将值存储在栈中 | 将值存储在堆中,将堆的地址存储在栈中 |
赋值 | 将值复制给另一个变量 | 将地址复制给另一个变量 - 两个变量共享同一个数据了 |
比较 | 比较值和类型 | 比较的内存地址 |
注意赋值操作,因为我们有很多隐性赋值过程:
- 实参赋值给形参
- 用变量接收函数的返回值
四、排序方式
1、冒泡排序
将数组中每相邻的两个元素进行大小比较,排列顺序
for(var i = 0; i < arr.length - 1; i++){
for(var j = 0; j < arr.length - 1; j++){
if(arr[j] > arr[j+1]){
var tmp = arr[j]
arr[j] = arr[j+1]
arr[j+1] = tmp
}
}
}
2、选择排序
每一轮都找到最大或最小值,排在最前面,在剩下的数字中找到最大或最小值排在第二位,。。。
for(var i = 0; i < arr.length - 1; i++) {
for(var j = i + 1; j < arr.length; j++) {
if(arr[j] > arr[i]){
var tmp = arr[j]
arr[j] = arr[i]
arr[i] = tmp
}
}
}
五、数组方法
删除开头:shift
删除结尾:pop
开头添加:unshift
结尾添加:push
给数组添加、修改、删除:splice
查找元素在数组中第一次出现的下标:indexOf
查找元素在数组中最后一次出现的下标:lastIndexOf
将数组元素使用连接符连接成一个字符串:join
遍历数组:forEach
过滤:filter
判断数组中是否至少有一个元素是满足条件的:some
求和:reduce
所有元素处理成新元素组成新数组:map
翻转:reverse
找数组中第一个满足条件的元素的下标:findIndex
找数组中第一个满足条件的元素:find
截取:slice
排序:sort
合并:concat
判断数组中是否所有元素都满足指定条件:every
六、字符串
字符串可以取下标 - 字符串[下标]
字符串是只读数据,只能读取字符,不可以修改、删除字符
字符串可以比较大小,规则:逐字符比较
字符的大小由阿斯克码决定
0~9:48~57
a~z:97~122
A~Z:65~90
七、字符串方法
查找字符或小字符串第一次出现的下标:indexOf
查找字符或小字符串最后一次出现的下标:lastIndexOf
分割成数组:split
获取指定下标对应字符的阿斯克码:charCodeAt
替换字符串:replace
去除空白:trim/trimLeft/trimRight
转大写:toUpperCase
转小写:toLowerCase
根据阿斯克码获取字符:String.fromCharCode
判断字符串中是否包含某个字符或小字符串:includes
截取字符串:slice/substr/subtring
判断字符串是否由某个字符或小字符串开头:startsWith
判断字符串是否由某个字符或小字符串结尾:endsWith
重复某个字符串:repeat
查找字符串中第一个满足指定正则表达式的小字符串的下标:search
提取字符串中满足正则表达式的小字符串:match
八、数学操作
随机数:random - 某个范围内的随机整数
绝对值:abs
向下取整:floor
向上取整:ceil
平方根:sqrt
圆周率:PI
最大值:max
最小值:min
四舍五入:round
正弦:sin
余弦:cos
求次方:pow
九、进制转换
将其他进制转为10进制 - parseInt
将10进制转成其他进制:toString
十、时间日期
创建时间日期对象:
new Date() // 获取当前时间日期对象
new Date(参数) // 指定的时间日期对象
参数:
'年-月-日 时:分:秒'
年,月,日,时,分,秒
时间戳
获取具体的时间日期:
年:getFullYear
月:getMonth 获取到的结果是0~11
日:getDate
时:getHours
分:getMinutes()
秒:getSeconds()
时间戳:getTime
星期:getDay()
设置具体的时间日期:
年:setFullYear
月:setMonth 设置的数字是0~11
日:setDate
时:setHours
分:setMinutes()
秒:setSeconds()
时间戳:setTime