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]
//参数直接是数组元素,无论多少

copyWithinfill将数组内部元素复制到指定位置,会改变元素

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数组新的方法

//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





scupture
35 声望1 粉丝

var me = 'missing you';