伪数组以及将伪数组转换为数组的几个方法

803 阅读1分钟

什么是伪数组?

伪数组具有以下特征:

  • 具有length属性
  • 能够使用数组遍历方法遍历它们
  • 不具有数组的push,pop等方法

伪数组有哪些?

函数的argument参数;还有像调用getElementsByTagName;document.childNodes之类的

它们都返回NodeList对象,都属于伪数组

var obj5 = { name: ‘wangcai’ , age: ‘ 99’ }这样的数据也是伪数组

真伪数组如何判断?

        let arr = [1,2,3];
        let arr1 = {naem:'wangcai',age:'99'};
        console.log(Array.isArray(arr));    //true
        console.log(Array.isArray(arr1));   //false

将伪数组转换为数组的几个方法

方法一:

        let newArr1 = Array.prototype.slice.call(arr1);
        console.log(Array.isArray(newArr1));   //true

方法二

        let newArr1 = Array.from(arr1);
        console.log(Array.isArray(newArr1));   //true

方法三

对于伪数组arguments可以使用ES6里面的..…运算符

        // 对于伪数组arguments可以使用ES6里面的...运算符
        function fn (){
            console.log(arguments);    //Arguments { 0: 1, 1: 2, 2: 3, 3: 4, 4: 5, … }
            console.log(Array.isArray(arguments));     //false 
            let newArr1 = [...arguments];
            console.log(Array.isArray(newArr1));       //true
        }
        fn(1,2,3,4,5);