伪数组转为真数组

本文详细介绍了在JavaScript中如何将伪数组转换为真数组,包括使用ES5和ES6的不同方法,通过具体实例展示了转换过程及后续的数组操作。
伪数组转为真数组

对DOM元素进行map、forEach操作时候需要进行遍历,伪数组遍历会报错:'elem.map is not a function',为了避免这个问题,需要进行转换。

(1) ES5 转为真数组

Array.prototype.slice.call(元素对象)

let elem1 = Array.prototype.slice.call(elem)
(2) ES6 转为真数组

Array.from(元素对象)

let elem2 = Array.from(elem)
(3) 例子
<ul>
    <li class="a" ></li>
    <li class="a" ></li>
    <li class="a" ></li>
    <li class="a" ></li>
    <li class="a" ></li>
</ul>

<script>

/* 获取li元素*/
let elem = document.getElementsByClassName('a')

/* 这样写是错误的,因为是伪数组*/
elem.map((item,index,elem) => {
    console.log(item +'---'+index + '----'+elem) 
    /*elem.map is not a function*/
})

// (1)es6 转为真数组
let elem1 = Array.from(elem)
// (2)es5 转为真数组
let elem2 = Array.prototype.slice.call(elem)

console.log(elem)
console.log(typeof elem)
console.log(elem1)
console.log(elem2)

elem1.map((item,index,elem1) => {
    console.log(item +'---'+index + '----'+elem1)
})
elem2.map((item,index,elem2) => {
    console.log(item +'---'+index + '----'+elem2)
})

</script>

 

 

 

转载于:https://www.cnblogs.com/xiaoniaohhl/p/11242047.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值