什么是伪数组?
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个条件
- 键必须是数值
- 必须带有length的键值对(没有length时显示空对象)