ES6数组的拓展

0 篇文章 0 订阅

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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值