ES6----数组

Arry.of( )将参数中所有值作为元素形成数组。可以多个参数。

Arry.from( ):将类数组对象或迭代对像=> {可以遍历的对象} 转换为数组,可以写入回调函数,函数的返回值直接放入数组中。函数调用几次就传入几次。

可以指定this

Arry.find( )传入的是回调函数====>做筛选。查找数组中符合条件的元素,若有多个符合条件的元素,返回值是第一个元素

re的返回值是find()函数的返回值,不是 function函数的返回值。传入的function函数的返回值是作为了条件,所以re并不是一个布尔值。

find中写回调函数是为了让你去写查找条件的。

Arry.findIndex( )查找数组中符合条件的元素索引,若有多个符合条件的元素,则返回第一个元素索引。

Arry.fill()将一定范围索引的数组元素内容填充为单个指定的值。

会改变原数组,返回值就是原数组。

Arry.entrys():遍历键值对。

Arry.keys()遍历键名

Arry.values()遍历键值

对象也有这些方法!

 

 

 

Arry.includes()数组是否包含指定值。

如果数组中有引用对象,那摩用includes去测试就是false,因为数组中的引用对象和我们测试的引用对象本就不是同一个对象,所以是false

打印false

 

注意:与 Set Map has 方法区分;Set has 方法用于查找值;Map has 方法用于查找键名。

 

 

 

Arry.flat(维数)嵌套数组转一维数组,返回值是一个数组。

flat()应用:

将多重数组得元素都取出来

 

 

 

自己实现flat函数:

在数组的原型上添加一个方法:此法方法利用for循环去便利原数组,将原数组中的每个数据都取出来,判断取出的数据是否是数组,如果是就再次便利数组取出元素,并放入新数组中;如果不是就直接将元素放入新数组中。

var arr=[[14,45],34,57,89,[45,67,[34,60,50],40],78,50]

Array.prototype.myflat=function( ){

var arr=[ ]

for( var i=0 ; i<this.length ; i++ ){

if( this.[i].constructor==Array ){

for( var j=0 ; j<this[i][j].lenght ; j++ ){

arr.push(this[i][j])

}

else{

arr.push(this[i])

}

}

}

return arr

}

var re2=arr.myflat( )

console.log(re2)

 

这就是一维降级,如果我们要写二重降级的话就要在    这里再次判断所取的元素是否是数组,就相当于重复上面的工作,所以我们可以在这里自调用myflat()来完成重复的步骤

 

改进:

var arr=[[14,45],34,57,89,[45,67,[34,60,50],40],78,50]

Array.prototype.myflat=function( ){

var arr=[ ]

for( var i=0 ; i<this.length ; i++ ){

if( this.[i].constructor == Array ){

var newarr=this[i].myflat()

for( var j=0 ; j < newarr.lenght ; j++){

arr.push(newarr[j])

}

}

else{

arr.push(this[i])

}

 

}

return arr

}

var re2=arr.myflat( )

console.log(re2)

 

现在就是所有的全部都降级了。

 

那么如果我们想要设定它的次数呢?

  就要引入形参,通过每次自调用减少参数值来控制函数自调用的次数,不要忘记了去判断参数是否为零。

var arr=[[14,45],34,57,89,[45,67,[34,60,50],40],78,50]

Array.prototype.myflat=function(count=Infinity ){

var arr=[ ]

for( var i=0 ; i<this.length ; i++ ){

if( this.[i].constructor == Array &&count>0){

var newarr=this[i].myflat(count-1)

for( var j=0 ; j < newarr.lenght ; j++){

arr.push(newarr[j])

}

}

else{

arr.push(this[i])

}

 

}

return arr

}

var re2=arr.myflat( )

console.log(re2)

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值