输出方式
console 控制台输出
- console.log
- console.dir 输出一个对象或者一个值的详细信息
- console.warn 警告的形式输出
- console.table 把多维的JSON数据以表格的形式输出
- console.time/concole.timeEnd 计算出time/timeEnd中间所有程序执行所消耗的时间
window 提示框,浏览器窗口中弹出
- alert
- confirm: 确定/取消
- prompt: 正在confirm基础上提供书写操作原因,确定-》返回输入信息
页面插入 向页面制定容器中插入内容
- document.write;
- innerHTML:box.innerHTML = 'JUdian'
- innerText:会把内容当作普通的文本,innerHTML能够把标签文本进行识别和渲染
- value:给页面中的文本框赋值
数据类型
基础数据类型
- number
- string
- boolean
- null
- undefined
- Symbol (es6新增唯一值类型)
number 相关
- NaN: 不是一个有效数字,但是属于number类型的,和任何值都不相等(包括自己,NaN == NaN -> false
- Infinity:无穷大的值,(number类型)
- isNaN:用来验证一个值是否是有效数字(如果检验的值是非数字类型的值,则需要先将其转换为数字再进行检测 其他类型与数字类型转换
- 字符串 -> 数字: '' ==> 0
- 布尔 -> 数字: true(1),false(0)
- 空 -> 数字:null -> 0,undefined -> NaN
- 对象 -> 数字:空数组[] -> 0,其他NaN
- parseInt([value]): 字符串转数字类型,从左到右开始遇到一个非有效数字字符,终止查找
- parseFloat([value]):小数
- toFixed(n):保留小数点后n位
boolean 相关
0,'',NaN,null,undefined都是false,
引用数据类型
- 对象数据类型object:普通对象({}),数组对象 [..],正则对象 /^$/,日期对象 date,数学函数对象 Math
- 函数数据类型function
Object 类型
{key:..,value:..}
key不能是引用类型,value可以是任何数据类型
JS操作
for循环
- for...in..:(for let index in arr)
- for...of..:(for let item of arr)
for循环体中关键字
- break:强制结束整个循环,循环体中遇到break整个循环都结束了
- continue:结束本轮循环,continue下面的代码不在执行,进行下一轮循环
数组方法
增删改
push 向数组末尾追加
- @params: 追加的项(多个任意类型)
- @return:新增数组的长度
- 改变原数组
pop 删除数组的最后一项
- @parmas:无
- @return:删除的那一项
- 改变原数组
unshift 数组的开头增加
- @params:追加的项
- @return:新增的数组长度
- 改变原数组
shift 删除数组的开头项
- @params:无
- @return:删除的那一项
- 改变原数组
splice 数组指定位置的增加,修改,删除
- @params:(n,m,s)从n开始删除m个元素(m没有删除到最后),用x占用删除的部分
- @return:删除的部分
- 改变原数组
使用方法:
- 删除
arr.splice(0):清空数组返回原数组组成的新数组
arr.splice(arr.length-1):删除最后一项
- 增加
arr.splice(arr.length,0,x):数组最后增加x
arr.splice(0,0,x):数组开头增加x
查询和拼接
slice 数组查询
- @parmas:(n,m) 从索引n开始找到m的地方(不包括m)m不写是找到末尾
- @return:把找到的元素以新数组的形式返回
- 不改变原数组
indexOf/lastIndexOf 当前数组第一次/最后一次出现位置的索引值
- @params:要检索的这一项内容
- @return:这一项出现位置的索引值,没有返回-1
- 不改变原数组
includes 检查数组是否包含某项(es6)
- @params:要检索的这一项
- @return:true包含,false不包含
- 不改变原数组
concat 数组拼接(合并)
- @params:拼接的项
- @return:拼接后的新数组
- 不改变原数组
数组转成字符串
toString
- @params:无
- @return:转换后的字符串每一项用‘,’分隔
- 不改变原数组
join
- @params:指定的分隔符 (' ')不用符号分隔,()未指定默认‘,’
- @return:转换后的字符串
- 不改变原数组
eval():把字符串变为js表达式(加减乘除)执行
let res = [1,2,3].join("-") -> '1-2-3'
eval(res); -> -4
排序
reverse 把数组倒过来排列
- @params:无
- @return:排列后的原始数组
- 改变原数组
sort 数组排序
- @params:无/一个函数
- @return:排序后的新数组
- 改变原数组
使用方法:
arr.sort((a,b) => a-b);
返回a-b 升序, b-a 降序
遍历
forEach
- @params:回调函数
- @return:无/undefined
- 不改变原数组
map
- @params:回调函数
- @return:映射后的新数组
- 不改变原数组
filter 过滤
返回数组中条件成立项,把不成立的过滤掉
-
@params:
callback(item,index,arr),返回true改元素通过保留改元素,false则不保留 thisArg(可省略)
-
@return:返回通过测试的元素组成的数组,如果没有返回空数组
-
不改变原数组
reduce 接收一个函数作为累加器
-
@params:
callback(prev,currentitem,currentindex,arr),
initialValue可省略,传递给函数的初始值
-
@return:函数累计处理结果
-
不改变原数组
find/findIndex
从左到右循环直到找到满足条件的那一项返回,如果没有返回undefined呀。findIndex:对应索引值
- @params:callback(item,index,arr),thisArg(可省略)
- @return:第一个满足测试函数的元素值(否则,undefined)
- 不改变原数组
some / every
some:数组中只要有一项成立就返回true
every:每一项都必须满足回调函数的条件(返回true)
- @params:callback(item,index,arr),thisArg(可省略)
- @return:true/false
- 不改变原数组
展开多维数组
flat
按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
- @params:depth(可选)深度,默认1
- @return:包含数组与子数组中的所有元素的新数组
- 不改变原数组
使用方法:
[1,2,[3,4],5].flat(); -> [1,2,3,4,5]
[1,2,[3,4,[5,6]]].flat(2); -> [1,2,3,4,5,6]
flat
- 展开一层或指定层
- 会移除数组中的空项
[1,2,[3,4,[5,6]]].flat(Infinity); -> [1,2,3,4,5,6]
Infinity 展开任意层
字符串方法
查找
charAt 获取字符串指定索引对应的字符
- params:number,代表索引
- @return:返回查找到的字符串,找不到返回空字符
charCodeAt 获取指定索引对应的ASCII(unicode编码值)
- @params:number
- @return:找到的unicode编码,找不到返回空字符串
字符串截取
substr
- @params:n,m 从索引n开始截取m个字符(m不写截取到末尾)
- @return:截取的字符串
substring
- @params:n,m 从索引n(包含)开始到索引m(不包含)结束
- @return:截取的字符串
slice
- @params:n,m 从索引n(包含)开始到索引m(不包含)结束,支持负数索引
- @return:截取的字符串
是否包含项
indexOf/lastIndexOf 获取字符在字符串中首次/最后一次出现的索引
- @params:x,y x被查找字符,y 控制查找的起始索引
- @return:索引值/-1
includes
- @params:字符
- @return:true(包含),false(不包含)
其他
split 字符串转数组
- @params:分隔符
- @return:分隔后的数组
replace 指定字符替换成别的字符
- @params:(老字符,新字符)/正则
- @return:替换之后的字符串