Javascript One

272 阅读6分钟

输出方式

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:替换之后的字符串