1,Array.from用于将对象转为数组(可遍历和类数组对象部署Iterator 属性的对象)
和扩展运算符的区别是任何具备Length属性的均可以使用数组
var arr = [1,2,3,4]; var set = new Set(arr); var obj = { 0:23, 2:'name', length:3 } //ES5的方法是用原型 Array.prototype.slice.call(obj) //[23, empty × 1, "name"] Array.from(obj) //[23, undefined, "name"] //该方法还有一个参数相似ES5的新方法 Array.from(arr,num=>num*3) // [3, 6, 9, 12] //将字符串转化为数组,特别是大于\uFFFF的单个字符,避免分割成多个
Array.of用来弥补构造函数的歧义函数
var arr1 = new Array(); //[] var arr2 = new Array(3); //[ , , ]三个空值只有一个参数其实指定的是数组数量 var arr3 = new Array(3,4) //[3,4] //以上只有参数大于两个的时候才会生成正确的数组 Array.of(3) //[3] //参数直接是数组元素,不管多少
copyWithin和fill将数组内部元素复制到指定位置,会改变元素this
Array.prototype.copyWithin(target,start,end);//target复制的目标位置,start复制的开始,end结束 var arr = [1,2,3,'a','b','c']; arr.copyWithin(0,2,4) arr.fill(3) // [3, 3, 3, 3, 3, 3]抹去全部元素而且填充 arr.fill(ele,star,end) //还有其余的参数指定起始位置 //这个两个方法后面的参数是从start开始包含该位置,end结束,不包含该位置
ES6数组新的方法prototype
//find(fn,[this.obj]);和ES5遍历的方法同样的参数 var arr = [1,2,3,4]; arr.find(x=>x>2); //返回第一个为true的元素,若是没有的话就返回undefined; //识别是否有元素NaN var ar = [NaN,2,4]; ar.indexOf(NaN)// -1; ar.find(x=>(Object.is(NaN,x))) //NaN //includes(ele,start,end);判段是否包含某个元素后面的参数是开始结束的位置 ar.includes(2) //true; ar.includes(NaN) //true