总结3种将伪数组转成真数组的方法

312 阅读1分钟

什么是伪数组?

JavaScript中有一些看起来像却又不是数组的对象,叫做伪数组。

什么是伪数组对象?

只包含使用从0开始的,并且是自然递增的整数作为键,还定义了length用来表示元素个数的对象,通常就认为是伪数组对象。

具有指向对象元素的数字索引下标,以及 length 属性告诉我们对象的元素个数;

不具有比如像push 、 forEach 以及 indexOf 等数组对象具有的方法

let obj = { 
            '0': 5, 
            '1': 8, 
            '2': 4, 
            '3': 6, 
        //'length':4 
          };

第一种方法:使用for in 将类数组对象转换为数组

let arr1 = [] 
for (let i in obj) {  
          arr1.push(obj[i]); 
        } 
      console.log(arr1);

第二种方法:内置对象keys和valus

  • 内置对象Object.keys:获取键
  • 内置对象Object.values获取值
let obj = { 
       '1': 5, 
       '2': 8, 
       '3': 4, 
       '4': 6 
       }; 
       //内置对象Object.keys:获取键 let arr = Object.keys(obj)  
       console.log(arr); //["1","2","3","4"]
       //内置对象Object.values获取值 let arr2 = Object.values(obj) 
       console.log(arr2); //[5,8,4,6]

第三种方法:Array.from()

let obj = {
		'0': 5,
		'1': 8,
		'2': 4,
		'3': 6,
		'length':4
	};
	    let arr = Array.from(obj)
	    console.log(arr);

Array.from()把对象转化为数组必须符合2个条件

  1. 键必须是数值
  2. 必须带有length的键值对(没有length时显示空对象)