数组的常用方法
1.push 方法:
语法:数组.push(数据)
作用:向数据末尾添加数据
返回值:追加数据后,数组最新的长度(Length)
2.pop 方法:
语法:数组.pop()
作用:删除数组的最后一条数据
返回值:被删除的数据
3.unshift 方法:
语法:数组.unshift(数据)
作用:向数据开头添加数据
返回值:追加数据后,数组最新的长度(Length)
4.shift 方法:
语法:数组.shift()
作用:删除数组的第一条数据
返回值:被删除的数据
5.reverse 方法:
语法:数组.reverse()
作用:反转数组
返回值:反转后的数组
6. sort 方法:
语法(1): 数组.sort()
作用:会将数据转化为字符串后,进行译为一位的对比
语法(2): 数组.sort(function (a,b){return a - b})
作用:会按照数字大小升序排列
语法(3). 数组.sort(function (a,b){return b - a})
作用:会按照数字大小降序排列
返回值:排序后的数组
注意:纯数字的字符串会自动转化为数字参加排序,其余字符串会按照最初的顺序排序
7.splice 方法:
语法(1):数组.splice(开始索引,需要截取多少个)
作用:截取数组部分内容
语法(2):数组.splice(开始索引,多少个,插入的数据1,插入的数据,插入的数据3...)
作用:截取数组部分内容,并括入新的数据
返回值:截取出来的内容 组成的 数组
数组的方法 能够改变原数组的只有上述七个
8.slice 方法:
语法:数组.slice(开始索引,结束索引)
参数:包前不包后:包含开始索引位置的数据,不包含结束索引位置的数据
不写开始索引: 默认是0;
不写结束索引,默认是数组的Length
作用:截取数组部分内容
返回值:截取出来的内容 组成的 数组,但原数组不受影响
注意:slice 这个方法允许写负数,写负数的时候就相当于写了length + 负数
##面试题:
数组中有两个方法,splice 与 slice,你能描述一下他们两个的区别吗?
1.参数含义不同,然后介绍一下参数哪里不同
2.spLice会改变原数组,而sLice不会
9.concat 方法:
语法:原始数组.concat(数组1,数组2,...,数据1,数据2,...)
作用:进行数据拼接,把小括号里的内容拼接在原始数组中
返回值:拼接好的数组
10.join 方法:
语法:数组.join('连接符')
使用 ! 将数组内的所有数据拼接成一个字符串
作用:使用"连接符",把数组内的每一个数据连接成一个字符串(不写连接符,默认使用的是 逗号 )
返回值:拼接好的字符串
11.indexOf
语法(1):数组.indexOf(要检查的数据)
作用:从前到后检查该数据第一次在该数组内出现的索引
语法(2):数组.indexOf(要检查的数据,开始索引)
作用:在开始索引的位置,按照从左到右的顺序,检查该数据第一次在该数组内出现的索引
返回值:找到数据的情况下,会将该数据 第一次 出现的下标(索引)返回,
没找到的情况下,会直接返回一个 -1
注意:开始索引不写的时候默认是 0
12.lastIndexOf 方法:
语法(1):数组.lastIndexOf(要检查的数据)
作用:从后向前(从右向左),检查该数据第一次在该数组内出现的索引
语法(2):数组.lastIndexOf(要检查的数据,开始索引)
作用:在开始索引的位置,按照从后向前(从右向左),检查该数据第一次在该数组内出现的索引
返回值:找到数据的情况下,会将该数据 第一次 出现的下标(索引)返回,
没找到的情况下,会直接返回一个 -1
数组遍历常用方法:
1.forEach
语法:数组.forEach(function (item, index, origin) {})
item : 数组的每一项的值
index : 数组的每一项对应的下标
origin : 原始数组(了解即可,一般不用)
下面方法含义都一样
作用:遍历数组
返回值:该方法永远没有返回值(undefined)
2.map 方法:
语法:数组.map(function (item,index,origin) {})
作用:映射数组
返回值:返国一个和原数组长度相同的数组,但是内部数据可以经过我们的映射加工
映射加工:就是在函数内 以 return 的形式书写
## 面试题:
有一道面试题:数组常用的遍历方法中,有一个forEach 和一个 map,
这两个方法有什么区别?
1. forEach 的作用是用来遍历数组.而 mao 的作用是用来映射数组。
2.forEach没有返回值,而 map是可以有返回值的
3.filter 方法:
语法:数组.filter(function (item,index,origin) {})
作用:过滤函数
返回值:返回一个新数组,内部存储的是原始数组过滤出来的部分内容
过滤条件:过滤条件以 return 的形式书写
4.find 方法:
语法:数组.find(function (item,index, origin) {})
作用:在数组内查找满足条件的第一项
返回值:找到的数据 如果没找到返回的是 undefined
查找条件:以 return 的形式书写
5.findIndex 方法:
语法:数组.findIndex(function (item,index, origin) {})
作用:在数组内查找满足条件的 第一项 的 下标
返回值:找到的数据 如果没找到返回的是 -1
查找条件:以 return 的形式书写
6.some 方法:
语法:数组.some(function (item,index, origin) {})
作用:判断数组内是否 有一个 满足条件
返回值:一个布尔值 true/false
判断条件以return 的形式书写
7.every 方法:
语法:数组.every(function (item,index, origin) {})
作用:判断数组内是否 全都 满足条件
返回值:一个布尔值 true/false
判断条件以return 的形式书写
8.reduce 方法:
语法:数组.reduce(function (prev,item,index, origin) {} init )
prev: 表示初始值或者上一次的运算结果
prev第一次的值,如果你传递了init,就是 init 的值。
如果没有传递init,那么就是数组[0]的值,然后item战拿到了下标[1]的值
如果传递了 init,循环执行 数组.Length 次
如果没有传递init,循环执行 数组.Length - 1 次
item : 数组的每一项的值
index : 数组的每一项对应的下标
origin : 原始数组(了解即可,一般不用)
作用:用来实现叠加效果
返回值:最终叠加的结果
叠加条件以 return 的形式书写
数组的数学的方法
在JS中,Math对象给我们提供了操作数据的一些方法(数学的方法)
1.random
语法:Math.random()
作用:得到一个随机数,每次生成的数字都不一样。但一定是0~1之间的,
包含0,但不包含1,也就是说最大值可能是0.999999...
2.round
语法:Math.round(数字)
作用:将这个数字(小数),按照四舍五入的方式变成整数
3.ceil
语法:Math.ceil(数字)
作用:将这个数字(小数),向上取整(1.01 -> 2)
4.floor
语法:Math.floor(数字)
作用:将这个数字(小数),向下取整(1.999 -> 1)
5.abs
语法:Math.abs(数字)
作用:返回这个数字的绝对值
6.sqrt
语法:Math.sqrt(数字)
作用:返回平方根
7.pow
语法:Math.pow(基数,幂)
作用:求 基数 的 幂 次方
8.max
语法:Math.max(数字1,数字2,...)
作用:返回传入数字中最大的值
9.min
语法:Math.max(数字1,数字2,...)
作用:返回传入数字中最小的值
10.PI
语法:Math.PI
作用:返回圆周率 Π (301415926....)
JS的严格模式
JS 是一个相对不是很严谨的语言 ,在开发的时候一些代码也不是很严格,换句话说严格模式就是对开发的时候,你写的代码做了一些要求
严格模式的规则:
1.声明变量必须要 var 关键字
2.函数的形参不可以重复
s中默认是没有开启严格模式。如果想要开启严格模式,
需要手动在代码最开始的位置(script标签内第一行),
写一个字符串 'use strict'
字符集(了解)
计算机只能存储二进制数据01010101
我们的大写字母小写字母符号之类的内容都是由二进制数字组成
或者说我们在敲一个字符的时候,都有一个对应的编号,
计算机存储的时候存储的是这些编号,
只不过我们看到的时候,是通过这些编号解析成我们看到的内容
前身: ASCIr as key(128)只够美国人用英语的使用
国内推出了一个属于中国的GBK国标码――前128位 ASCII码,后边从129位开始就是汉字
unicode(万国码)
前128位还是ASCII码,后边开始是各个国家的文字码
八位十六进制编码
容量小,但是占用内存也小
UTF-8
十六位的十六进制编码
容量大,但是占用内存也大