文章目录
对象
Object
创建对象的方式:
- new 操作符: let obj = new Object();
- 对象字面量:let obj={};//不会调用Object构造函数
使用对象属性
- .key的方式:obj.a;
- [key]方式:obj[a]; //当key是变量或关键字,保留字,字符串时使用比较方便
Array
数组创建
- new操作符
- 数组字面量
- Array.from(); 将一个可迭代对象或含有length和可索引结构转换为数组
Array.from(intoraterObj,callback,this)//
callback:类似map()方法遍历intoraterObj;
this:可修改callback内部的this;
const a1=[1,2,3];
const a2=a1.from(a1,(x)=>x*2);//箭头函数不能绑定this
数组索引
- length:可以通过length动态增删数组长度
数组检验
- instanceof操作符:arr instanceof Array //如果有多个全局执行上下文,则会导致Array不同,检验出问题。
- Array.isArray() //不需要在乎哪个上下文
数组的复制和填充
- 批量复制 copyWithin(postion,start,end)//复制自身的一部分数据
let ints = [0,1,2,3,4]
ints.copyWithin(2,3,4)//ints-> [0,1,3,3,4]
- 填充 fill(value,start,end)//vlaue:需要填充的值,start/end:开始和结束位置
let ints = [0,1,2,3,4]
ints.fill(6,2,5)//ints -> [0,1,6,6,6],不会超出数组长度
转换
- 转为字符串 Array.toStirng()//会生成用’,'分割的字符串,且会对每一个元素调用toString()
- Array.toLocalString()//同上,会对每一个元素调用toLocalString()
栈方法(在数据尾部操作)
- 进栈 push()//尾部添加数据
- 出栈 pop()//尾部删除数据
队列方法(头尾操作,先进先出)
- 进队列 push()
- 出队列 shift()//头部删除
- 头部添加 unshift()
排序方法
- 倒序(都是修改原数组)
- reverse(array)//直接颠倒数组的顺序
- sort(callback(value1,value2))
//简单得理解callback得返回值如果为正则调val1,val2位置,为负|0则保持val1在val2前面。
操作方法
- concat()//合并数组,保持原数组不变
let colors = ["red", "green", "blue"];
let colors2 = colors.concat("yellow", ["black", "brown"]);
console.log(colors); // ["red", "green","blue"]
console.log(colors2); // ["red", "green", "blue", "yellow", "black", "brown"]
Symbol.isConcatSpreadable]:true//defalut;强制打平数组
:false//不打平数组
- splice(postion,length,…array)//postion:操作的位置;length:操作的长度;替换的值
- 删除 splice(postion,length)//length删除的个数,array传空
- 插入 splice(postion,0,…array)
- 替换 splice(postion,length,…array)
检索方法
-
严格相等检索(每一个元素都是"==="判断)
- indexOf(value)//从开头检索,返回下标
- lastIndexOf(value)//从结尾检索,返回下标
- includes(value)//从头检索,返回Boolean
-
断言函数
- find(callback(element,index,array),this)
//可传入回调进行判断,this改变函数内的this指向(箭头函数不可用);返回元素(只要满足立即结束返回)
let a=[1,2,3,4]; a.find((ele,i,arr)=>ele>2)//3
- findIndex(callback(element,index,array),this)//同find一样,区别是返回下标
- find(callback(element,index,array),this)
迭代方法
都不会改变原有数组
- every():对数组每一项都运行传入的函数,如果对每一项函数都返回 true,则这个方法返回 true。
- some():对数组每一项都运行传入的函数,如果有一项函数返回 true,则这个方法返回 true。
- filter():对数组每一项都运行传入的函数,函数返回 true 的项会组成数组之后返回。
- map():对数组每一项都运行传入的函数,返回由每次函数调用的结果构成的数组。
- some():对数组每一项都运行传入的函数,如果有一项函数返回 true,则这个方法返回 true。
归并方法
会迭代数组的所有项,并在此基础上构建一个最终返回值。
callback(上一个归并值,当前项,当前项的索引和数组本身)
- reduce(callback,initalValue)//callback(prev,cur,index,array)
- reduceRight同理,只是从右开始遍历。
Map
- 与Object区别:
- es6中一种新的可迭代,键值对集合
- Map在大量数据时内存占比小,插入删除性能好
- 可以使用任何数据类型作为键
- api:
- 增/改:set(key,value)//返回Map的实例,可链式调用
- 删:delete(key)//返回Boolean
- 查:has(value)//返回Boolean
- 删所有:clear()//返回Boolean
weekMap(不常用)
与Map的区别,如果内容一旦没用被引用就会被回收销毁,从而无法迭代,没有size属性,没用clear()方法
- api:
- set(key,value)
- delete(key)
- get(key)
- has(key)
Set
类似数组,只能不可重复得值
- api:
- add(value)//新增元素,返回set对象,可链式调用,一次只能存入一个元素;
- has(value)//查询元素;delete(value)//删除元素 //均返回Boolean
- clear()//清除所有元素,返回undefind
weekSet(不常用)
和weekMap同理,Set得兄弟版本
- api:略