数据操作

数据操作

一、对象

一个大空间存储多个小的内存空间,一个变量中存储多个数据的数据

定义:

var 对象 = { 属性: 值, 属性: 值, ... }
var 对象 = new Object()

基本操作:

设置对象的键值对:

对象.属性名 = 值
对象['属性名'] = 值

如果属性名原本不存在 - 新增

如果属性名原本存在 - 修改/替换

访问对象的值:

对象.属性名
对象['属性名']

删除对象键值对:

delete 对象.属性名
delete 对象['属性名']

对象的特性:

  1. 对象中的键值对之间是无序的
  2. 对象中的属性是唯一的

对象的遍历:

for(var key in 对象){
    key代表对象中的每个属性
    对象[key]
}

注意:如果使用变量代表对象的键,获取值的时候必须使用对象[键]语法

二、数组

概念:一个大空间存储多个小的内存空间,一个变量中存储多个数据的数据

跟对象的区别:数组中的小空间是有顺序的

定义:

var arr = []
var arr = new Array()

注意:只放入一个数字的时候,[]表示数组中有一个元素,new表示有多个空的小空间。

基本操作:

设置数组中的数据:

数组[下标] = 值

访问:

数组[下标]

删除数据(保留小空间):

delete 数组[下标]

长度:

数组.length // 获取数组中元素个数
数组.length = 数字 // 将数组保留多少个小空间

数组的规律:

  1. 数组的第一个元素下标一定是0
  2. 数组的最后一个元素下标一定是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. 实参赋值给形参
  2. 用变量接收函数的返回值

四、排序方式

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

你可能感兴趣的:(javascript前端)