JavaScript中类数组转化的方式
2021/9/27 1:10:58
本文主要是介绍JavaScript中类数组转化的方式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
JavaScript中类数组转化的方式
很多时候我们要在JavaScript中对类数组进行转化,所谓的类数组是指那些有数组的结构,但原型对象不为Array的数据结构,比如childNodes,querySelectorAll返回的节点对象,都属于类数组,对于这些类数组,我们无法调用数组默认的API,对他们处理起来会比较困难,因此很多时候我们需要将他们转化成数组对象再进行处理。
使用Array.from
Array.from本身就是为了转化为数组而诞生的,它的使用结果就是能够将 参数转化为数组对象
` console.log(document.querySelectorAll('div')) let element = document.querySelectorAll('div'); console.log(Array.from(element))`
除此之外,Array.from还可以将map,set转化为数组,其中map的每一个键值对都会被拆开,作为一组连续的元素
如果参数是一个字符串,那么字符串也会被拆分成数组结构,类似与split(""),但其无法选择参数,只能分成逐个字符
rest参数
Rest就是为解决传入的参数数量不一定, rest 本身就是数组,数组的相关的方法都可以用。
` console.log(document.querySelectorAll('div')) let element = document.querySelectorAll('div'); console.log([...element])`
利用concat
` console.log([].concat.apply([], element))`
利用apply利用参数序列传参的特性,将类数组对象作为参数序列注入数组
利用slice.call
这种写法可以看作rest参数的ES5写法,因为slice的内部构造决定了slice的参数只要是一个可迭代对象它就可以执行,但slice本身是一个Array上的方法,因此类数组对象不能直接调用,因此我们需要用call将它的this绑定到要转化的类数组对象上,然后利用slice迭代产生一个数组对象
` console.log(Array.prototype.slice.call(element))`
附上slice的基本是实现原理,再其内部用length进行迭代导致类数组对象也可以执行这个函数,而内部的push方法可以让其产生一个新数组
` Array.prototype.mySlice = function(beg, end) { let begin = beg || 0; let last = end || this.length; begin = (begin >= 0) ? begin : Math.max(0, begin + last); last = (typeof last == 'number') ? Math.min(last, this.length) : this.length; let res = new Array(); for (let i = begin; i < last; i++) { res.push(this[i]); } return res; }`
这篇关于JavaScript中类数组转化的方式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)