当前位置: 首页 > news >正文

函数的arguments为什么不是数组?如何转化为数组?

因为arguments本身并不能调用数组方法,它是一个另外一种对象类型,只不过属性从0开始排,依次为0 1 2…最后还有callee和length属性,我们也把这样的对象成为类数组。

常见的类数组还有:
1.用getElementsByTagName/ClassName()获得的HTMLCollection
2.用querySelector获得的nodeList
那这就导致很多数组的方法就不能用了,必要时需要我们将它们转换为数组,有哪些方法呐?

1.Array.prototype.slice.call()

function sum(a,b){let args = Array.prototype.slice.call(arguments);console.log(args.reduce((sum,cur)=>sum+cur));//args可以调用数组原生的方法
}
sum(1,2);//

2.Array.from()

function sum(a,b){let args = Array.from(arguments);console.log(args.reduce((sum,cur)=>sum+cur));//args可以调用数组原生的方法
}
sum(1,2);//3

3.ES6展开运算符

function sum(a,b){let args = [...arguments];console.log(args.reduce((sum,cur)=>sum+cur));//args可以调用数组原生的方法
}
sum(1,2);//3

4.利用concat+apply

function sum(a,b){let args = Array.prototype.concat.apply([],arguments);//apply方法会把第二个参数展开console.log(args.reduce((sum,cur)=>sum+cur));//args可以调用数组原生的方法
}
sum(1,2);//3
http://www.lryc.cn/news/455548.html

相关文章:

  • Java之反射
  • 3dsMax添加天空盒
  • C语言的类型提升机制
  • Pandas和Seaborn数据可视化
  • 爬虫(Python版本)
  • 【分布式训练 debug】VS Code Debug 技巧:launch.json实用参数
  • pycharm连接linux服务器需要提前安装ssh服务
  • 通信工程学习:什么是LAN局域网、MAN城域网、WAN广域网
  • LeetCode热题100速通
  • Python代码编写KDJ指标
  • 传统少数民族物品检测系统源码分享
  • 深度学习中的迁移学习:预训练模型微调与实践
  • 原生input实现时间选择器用法
  • 对象的概念
  • ARIMA|基于自回归差分移动平均模型时间序列预测
  • sqli-labs靶场第三关less-3
  • 泡沫背后:人工智能的虚幻与现实
  • 旅游管理智能化:SpringBoot框架的应用
  • 基于方块编码的图像压缩matlab仿真,带GUI界面
  • 不同jdk版本间的替换
  • 408算法题leetcode--第28天
  • 【无人机设计与控制】无人机三维路径规划,对比蚁群算法,ACO_Astar_RRT算法
  • 毕设 大数据电影数据分析与可视化系统(源码+论文)
  • 10月7日刷题记录
  • 苍穹外卖学习笔记(十五)
  • 知识图谱入门——5:Neo4j Desktop安装和使用手册(小白向:Cypher 查询语言:逐步教程!Neo4j 优缺点分析)
  • 35个数据分析模型
  • Java | Leetcode Java题解之第457题环形数组是否存在循环
  • date:10.4(Content:Mr.Peng)( C language practice)
  • 【K8S系列】Kubernetes 集群中的网络常见面试题