在进行转换之前首先我们要明白什么是伪数组。
伪数组就是指一个类似于数组的集合。同样它具有length以及index数字索引
好了我们先来定义一个伪数组
let pseudoArray = {
0: 'hello',
1: 'world',
length: 2
}
好了一个经典的伪数组就定义好了
这时候我们使用forEach遍历一下
pesudoArray.forEach(x => {
console.log(x)
})
// 这个时候运行程序浏览器会报错
// lesson2.js:6 Uncaught TypeError: pseudoArray.forEach is not a function at lesson2.js:6
因为它看似数组其实不然
我们这个时候需要转换一下
怎么转换呢?
Es5之中我们会使用数组对象上面的一个方法
let array = [].slice.call(pseudoArray)
array.forEach(x => {
console.log(x)
})
// 运行程序这个时候会正确的输出
// hello
// world
有的同学可能会说很麻烦啊!有没有更简单的方法呢?
在ES6中array提供了from方法可以直接转化
let array = Array.from(pseudoArray)
array.forEach(x => {
console.log(x)
})
// 这个时候程序也可以正常的运行
// hello
// world
// 和之前ES5中繁琐的步骤是一样的
评论一下?