es6中数组扩展

在Javascript中什么是伪数组?如何将伪数组转化为标准数组?

无法直接调用数组方法或期望length属性有什么特殊的行为,不具有数组的push,pop等方法,但仍可以对真正数组遍历方法来遍历它们。
典型的是函数的argument参数,还有像调用getElementsByTagName,document.childNodes之类的,它们都返回NodeList对象都属于伪数组。
可以使用Array.prototype.slice.call(fakeArray)将数组转化为真正的Array对象。


伪数组定义
  • 拥有length属性,其它属性(索引)为非负整数(对象中的索引会被当做字符串来处理,这里你可以当做是个非负整数串来理解)
  • 不具有数组所具有的方法
  • 伪数组是一个 Object, 而真实的数组是一个 Array

es5中如何将伪数组转化为真数组
Array.prototype.slice.call(arguments)
// 或
[].slice.call(arguments) 

es6中如何将伪数组转化为真数组

 


 

 

 

 

  arr.includes() 判断数中是否包含给定的值

 

let arr = [1,2,3,4,5]
let arr1 = arr.includes(2)  
console.log(arr1)   // ture
let arr2 = arr.includes(9) 
console.log(arr2)    // false
let arr3 = [1,2,3,NaN].includes(NaN)
console.log(arr3)  // true
与indexOf()的区别:
1 indexOf()返回的是数值,而includes()返回的是布尔值
2 indexOf() 不能判断NaN,返回为-1 ,includes()则可以判断
 
 
arr.fill(target, start, end) 使用给定的值,填充一个数组,ps:填充完后会改变原数组
  参数: target -- 待填充的元素
      start -- 开始填充的位置-索引
         end -- 终止填充的位置-索引(不包括该位置)
let arr = [1,2,3,4,5]

 

let arr1 = arr.fill(5)
console.log(arr1)  // [5, 5, 5, 5, 5]
console.log(arr)   // [5, 5, 5, 5, 5]

let arr2 = arr.fill(5,2)
console.log(arr2)    // [1, 2, 5, 5, 5]

let arr3 = arr.fill(5,1,3)
console.log(arr3)      //[1, 5, 5, 4, 5]

 

arr.copyWithin() 在当前数组内部,将制定位置的数组复制到其他位置,会覆盖原数组项,返回当前数组
  参数: target --必选 索引从该位置开始替换数组项
      start --可选 索引从该位置开始读取数组项,默认为0.如果为负值,则从右往左读。
      end --可选 索引到该位置停止读取的数组项,默认是Array.length,如果是负值,表示倒数
let arr = [1,2,3,4,5,6,7]
let arr1 = arr.copyWithin(1)
console.log(arr1)   // [1, 1, 2, 3, 4, 5, 6]
let arr2 = arr.copyWithin(1,2)
console.log(arr2)   // [1, 3, 4, 5, 6, 7, 7]
let arr3 = arr.copyWithin(1,2,4)
console.log(arr3)   // [1, 3, 4, 4, 5, 6, 7]

 Array.of() 将一组值转换成数组,类似于声明数组    ---es6

let str = '11'
console.log(Array.of(str))   // ['11']

 


posted @ 2020-08-19 20:56  青幽草  阅读(154)  评论(0编辑  收藏  举报