Array.from()
用于将两类对象转为真正的数组,只要部署了可遍历(Iterator)接口的数据结构,它都能将其转化为数组.
比如:Set,Map,querySelectorAll(‘p’)的NodeList集合
Array.of()
用于将一组值转化为数组
Array.of(1,22,3) //[1,22,3]
可以代替Array()和new Array()
copyWithin()
在当前数组内部将制定位置的成员复制到其他的位置(会覆盖原有成员),然后返回当前数组.也就是说,使用这个方法会修改当前数组.
Array.prototype.copyWithin(target,start=0,end=this,length)
target(必需):从该位置开始替换
start(可选):从该位置开始读取数据,默认0,如果为负数,则倒数
end(可选):到该位置前停止读取数据,默认等于数组长度,如果为负值,表示倒数.
[1,2,3,4,5].copyWithin(0,3) //[4,5,3,4,5]
表示从下表3开始读取,到最后一位.读到的是4,5.替换是从下表0开始替换的.所以得到的结果是
[4,5,3,4,5]
find()和findIndex()
find()
find方法,用于找出第一个符合条件的数组成员.它的参数是一个回调函数,所有数组成员依次执行该回调函数,知道找到第一个返回为true的成员,然后返回该成员,如果没有符合条件的成员,返回undefined.
[4,5,-5,10].find((n) => n<0) //-5
[1,5,10,15].find(function(value,index,arr){
return value>9
}) //10
value:当前值
index:当前位置.
arr:原数组
findIndex()
用法与find相似,返回第一个符合条件的成员位置,如果所有成员都不符合条件,则返回-1
[NaN].findIndex(y => Object.is(Nan,y))//0
fill()
给定值填充数据
['a','b','c'].fill(7) //[7,7,7] 数组中已有元素全部被抹去
['a','b','c'].fill(7,1,2) // ['a','7','c'] 从1号位置开始填充,到2号位置之前结束.
entries(),keys(),Values()
es6提供的3个新方法用于遍历数组.他们都返回一个遍历器对象,卡用于for…of的循环遍历,唯一的区别是,keys()是对键名的遍历,value是对键值的遍历,entries()是对键值对的遍历.
for(let index 0f ['a','b'].keys()){
console.log(index)
}
//0
// 1
for(let elem 0f ['a','b'].values()){
console.log(elem)
}
//'a'
// 'b'
for(let [index,elem] 0f ['a','b'].entries()){
console.log(index,elem)
}
//0 'a'
//1 'b'
includes()
Arrar.prototype.includes返回一个布尔值,表示某个数组是否包含给定的值,与字符串的includes方法类似.该方法属于es7
[1,2,3].includes(2); //true
[1,2,3].includes(4); //false
[1,2,NaN].includes(NaN); //true
[1,2,3].includes(3,3); //false 第二个参数表示搜索的起始位置,默认0,负数表示倒数
[1,2,3].includes(3,-1); //true
数组的空位
数组的推导
数组推导提供了简介写法,允许直接通过现有数组生成新数组.这项功能本来要放到es6,但是TC39委员会想继续完善它,让其支持所有的数据结构,所以推迟到es7.
var a1 = [1,2,3,4];
var a2 = [for(i of a1) i * 2]
a2 // [2,4,6,8]
上面的代码表示数组a2童工for…of结构直接在a1的基础上生成
var years = [1954,1974,1990,2006,2010,2014];
[for(year of years) if (year > 2000 ) year] //[2006,2010,2014]
[for(year of years) if (year > 2000 && year <2010) year] //[2006]