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)