目录
数组方法
字符串方法
遍历
es6
构造函数及原型 原型链
this指向 修改
vue事件循环Event Loop
FormData
1、push( ):末尾追加 返回值是添加数据后数组的新长度
2、pop( ):末尾删除一个元素 返回被删除掉的元素
3、shift( ):从头部删除一个元素 返回被删除掉的元素
4、unshift( ):向数组的开头添加 返回值是添加数据后数组的新长度
5、sort( ):排序 返回的是从新排序的原数组
6、splice(index,len,[item]):index:开始下标 len: 替换/删除的长度 item:替换的值,删除item为空
7、reverse( ): 原数组倒序 返回值是倒序之后的原数组
1、concat( ):数组合并
2、join( ):讲数组进行分割成为字符串 这能分割一层在套一层就分隔不了了
3、map( ):没有return时,对数组的遍历。有return时,返回一个新数组(经过过滤)
4、forEach( ):遍历
5、filter( ):会返回过滤后的数组
6、slice(start,end):截取
1、chartAt( ):返回在指定位置的字符;
2、concat( ):返回新的字符串**,将一个或多个字符串与原字符串连接合并
3、indexOf( ):检索字符串,返回第一次出现的索引,没有出现则为-1
4、lastIndexOf(searchValue[ fromIndex]) 返回从字符串尾部开始第一次出现的索引,没有则-1,fromIndex的值相对于从尾部开始的索引
5、split( ):返回一个以指定分隔符出现位置分隔而成的一个数组,数组元素不包含分隔符
6、substr( ):从起始索引号提取字符串中指定数目的字符;
7、substring( ):提取字符串中两个指定的索引号之间的字符;
8、toLowerCase( ):字符串转小写;
9、toUpperCase( ):字符串转大写;
10、valueOf( ):返回某个字符串对象的原始值;
11、trim( ):删除字符串两边的空格;
12、trimeState 取出开始的空格
13、trimeEnd 去除末尾空格
14、includes(searchString[, position])返回boolean,判断一个字符串是否包含在另一个字符串中,从postition索引开始搜寻,默认0
15、slice( ):提取字符串片段,并在新的字符串中返回被提取的部分;
16、search(regexp)返回首次匹配到的索引,没有则-1,执行正则表达式和 String 对象之间的一个搜索匹配
17、toString()返回一个表示调用对象的字符串,该方法返回指定对象的字符串形式
18、trim()返回去掉两端空白后的新字符串 还有trimend trimstart
19、replace() 把指定的字符串替换成为别的字符
浅:object.assign()对象合并、slice()字符串截取、concat()数组/字符串合并、扩展运算符...
深:json.parse(ison.stringify(obj))
遍历汇总
map filter reduce
es6重点 汇总
去重
es6新增的数组方法
构造函数和原型
obj.sayHello.call(obj1, '设计师', '画画');
obj.sayHello.apply(obj1, ['设计师', '画画']);//只有两个参数 第二个为数组
obj.sayHello.bind(obj1, '设计师', '画画'); // 无输出结果
obj.sayHello.bind(obj1, '设计师', '画画')(); // bind需调用
eventLoop详解
微任务包括:Promise async/await …
宏任务包括:如定时器回调、UI 渲染...
promise详解 三种状态:pending(进行中)、fulfilled(成功)和rejected(失败)
FormData
FormData详解
js递归遍历树形结构
let arr = [
{
name:"总费用",
money:"1000",
tier:1,
children:[
{
name:"伙食",
money:"500",
children:[
{name:"早餐",money:"100"},
{name:"午餐",money:"200"},
{name:"晚餐",money:"200"}
]
},
{
name:"住宿",
money:"500",
children:[
{name:"第一晚",money:"100"},
{name:"第二晚",money:"200"},
]
},
],
}
]
deep(arr)
// 递归循环children加层级tier
function deep(val) {
val.forEach((item) => {
item.children = item.children && item.children.length > 0 ? item.children : undefined
if (item.children && item.children.length > 0) {
item.children.forEach((e) => {
e.tier = item.tier + 1
})
deep(item.children) // 函数内部调用函数 传递子层级
}
})
return true
}
打平树结构数据
// 把树结构数据打平为一维数组
const flatTree = (treeData) => {
let result = []
treeData.forEach((item) => {
// 先克隆一份数据作为第一层级的填充
let res = JSON.parse(JSON.stringify(item))
delete res.children
result.push(res)
if (item.children && item.children.length > 0) {
// 如果当前children为数组并且长度大于0,才可进入flatTree()方法
result = result.concat(flatTree(item.children))
}
})
return result
}
阶乘
// 阶乘函数定义
function factorial(num) {
if (num === 1) {
return 1;
} else {
return num * factorial(num - 1)
}
}