JavaScript数组你都掰扯不明白,简历上你敢写精通JavaScript?
目录
- 一、如何判断一个对象是不是数组?
- 二、填充方法fill()
- 1、ES6新增了两个方法
- 2、fill()
- 三、复制方法```copyWithin()```
- 四、栈方法
- 五、队列方法
- 六、排序方法
- 七、操作方法
- 八、搜索和位置方法
- 1、严格相当搜索
- 2、断言函数
- 九、迭代方法
- 1、every()和some()
- 2、filter()
- 3、map()
- 4、foreach()
- 十、归并方法reduce()
- ```为什么80%的码农做不了架构师?>>>```
- [Java专栏目录 | 点击这里](https://blog.csdn.net/guorui_java/article/details/120098618)
- 十一、关注公众号哪吒编程,回复1024,获取Java学习资料,还有不定期的送书活动
一、如何判断一个对象是不是数组?
在只有一个全局作用域的时候,使用instanceof操作符就足矣:
if(value instanceof Array){//操作数组
}
使用instanceof的前提是只有一个全局执行上下文,如果网页里有多个框架,则可能涉及两个不同的全局上下文,因此就会有两个不同版本的Array构造函数。如果要把数组从一个框架传到另一个框架,则这个数组的构造函数将有别于第二个框架内本地创建的数组。
为了解决这个问题,ECMAScript提供了 Array.isArray()
方法。这个方法的目的就是确定一个值是否为数组,而不用管它是在哪个全局执行上下文中创建的。
if(Array.isArray(value)){//操作数组
}
二、填充方法fill()
1、ES6新增了两个方法
批量复制方法copyWithin()
,以及填充数组方法fill()
。
这两个方法的函数比较类似,都需要指定既有数组实例上的一个范围,包含开始索引,不包含结束索引,使用这个方法不会改变数组的大小。
2、fill()
使用fill()
方法可以向一个已有的数组中插入全部或部分相同的值。开始索引用于指定开始填充的位置,它是可选的。如果不提供结束索引,则一直填充到数组末尾。负值索引从数组末尾开始计算。
例如:
(1)用1填充整个数组
const arr = [0,0,0,0,0]
arr.fill(1);//[1,1,1,1,1]
arr.fill(0);//[0,0,0,0,0]//重置为0
(2)用2填充索引大于等于2的元素
arr.fill(2,2);//[0,0,2,2,2]
arr.fill(0);//[0,0,0,0,0]//重置为0
(3)使用3填充索引大于等于1且小于3的元素
arr.fill(2,1,3);//[0,3,3,0,0]
(4)用4填充索引大于等于1且小于4的元素
arr.fill(4,-4,-1);//[0,4,4,4,0]
注意:fill()会自动忽略超出数组边界、零长度及方向相反的索引范围。
三、复制方法copyWithin()
copyWithin()
会按照指定范围浅复制数组中的部分内容,然后将他们插入到指定索引开始的位置。
例如:
let arr,reset = () => arr = [0,1,2,3,4,5,6,7,8,9];
reset();
(1)从arr中复制索引5开始的内容,插入到索引0开始的位置
arr.copyWithin(0,5);//[5,6,7,8,9,5,6,7,8,9]
reset();
//从arr中复制索引0开始到索引3结束的内容,插入到索引4开始的地方
arr.copyWithin(4,0,3);//[0,1,2,3,0,1,2,7,8,9]
四、栈方法
ECMAScript给数组提供了相当于栈操作的方法。
栈是一种后进先出(LIFO,Last-In-First-Out)的结构,也就是最近添加的元素先被删除。
插入push();
删除pop();
五、队列方法
队列以先进先出(FIFO,First-In-First-Out)形式的结构。
插入push();
取出shift();
六、排序方法
数组有两个方法可以用来对元素进行重排序:
- reverse()
- sort()
七、操作方法
1、合并concat()
2、切割slice()
slice()用于创建一个包含原有数组中一个或多个元素的新数组。
八、搜索和位置方法
ECMAScript提供两类搜索数组的方法,按严格相等搜索和按断言函数搜索。
1、严格相当搜索
ECMAScript提供了3中严格相等的搜索方法:
- indexOf()
- lastIndexOf()
- includes()
2、断言函数
- find()
- findIndex()
九、迭代方法
1、every()和some()
every()
对数组每一项都进行传入的函数,如果对每一项函数都返回true,则这个方法返回true。
some()
对数组每一项都运行传入的函数,如果有一项返函数返回true,则就返回true。
例如:
let nums = [1,2,3,4,5,4,3,2,1];
let ret = nums.every((item,index,array) => item > 2);//false
ret = nums.some((item,index,array) => item > 2);//true
2、filter()
filter()
是基于给定的函数来决定某一项是否应该包含在它返回的数组中。
比如,要返回一个所有元素都大于2的数组:
let ret = nums.filter((item,index,array) => item>2);//[3,4,5,4,3]
3、map()
map()
返回一个数组,这个数组的每一项都是原始数组中同样位置的元素进行传入函数而返回的结果。
例如,对数组中的所有元素都乘以2:
let ret = nums.map((item,index ,array) => item * 2);//[2,4,6,8,10,8,6,4,2]
4、foreach()
foreach()
只会对每一项运行传入的函数,没有返回值。本质上foreach()
就相当于for循环遍历数组。
nums.foreach((item,index,array) => {//执行某些操作
});
十、归并方法reduce()
reduce()
对每一项都会运行的归并函数。
reduce()
函数有四个参数:
- 上一个归并值
- 当前项
- 当前项的索引
- 数组本身
这个函数返回的任何值都会作为下一次调用同一函数的第一个参数。如果没有传入可选的第二个参数(作为归并起始点),则第一次迭代将从数组的第二项开始,因此传递归并函数的第一个参数是数组的第一项,第二个参数是数组的第二项。
可以使用reduce()
对数组中所有值进行求和操作。
let nums = [1,2,3,4,5];
let ret = nums.reduce((prev,cur,index,array){return prev+cur;
});
alert(ret);//15
为什么80%的码农做不了架构师?>>>
Java专栏目录 | 点击这里
十一、关注公众号哪吒编程,回复1024,获取Java学习资料,还有不定期的送书活动
- JavaScript从入门到精通
- Go语言从基础到中台微服务实战开发
- 微信小程序开发从入门到实战
- Python 编程技术手册
JavaScript数组你都掰扯不明白,简历上你敢写精通JavaScript?相关推荐
- JavaScript 数组你都掰扯不明白,还敢说精通 JavaScript ?| 赠书
作者 | 哪吒 来源 | CSDN博客 最近小编在看文章的时候,总有很多刚刚入门的小白说精通这个,精通那个技术,更有意思的是,最近看到一则简历上说精通 JavaScript ,聊一聊发现数组还不明白, ...
- 简历上,我写精通 JUC 的底气
真的假的,你简历上敢写精通 JUC ? 是真学到精通了,还是说只学到了个皮毛就写精通,从而争取一个面试机会. 我相信,当很多人看到文章标题的第一反应也会如上面的一样,质疑.好奇.这很正常,如果是我看到 ...
- 简历上终于可以写“精通MySQL”!
MySQL 作为互联网中非常热门的数据库,在高并发业务场景下,一条好的 MySQL 语句能为企业节省大量的运作时间和成本,这也是为何互联网大厂面试官最爱考察数据库底层和性能调优的原因.因此,了解其底层 ...
- 我换了一个灯泡,看看互联网大厂员工们的简历上都会怎么写
我换了一个灯泡,看看互联网大厂员工们的简历上都会怎么写 https://www.toutiao.com/i6937238178176827911/?tt_from=weixin&utm_cam ...
- JavaScript 数组拼接打印_犀牛书作者:最该忘记的JavaScript特性
编者按:本文译者李松峰,资深技术图书译者,翻译出版过40余部技术及交互设计专著,现任360奇舞团Web前端开发资深专家,360前端技术委员会委员.W3C AC代表. 原文:https://davidf ...
- 这是如何更好地利用JavaScript数组的方法
by pacdiv 由pacdiv 这是如何更好地利用JavaScript数组的方法 (Here's how you can make better use of JavaScript arrays) ...
- javascript核心_功能强大的JavaScript数组
数组是JavaScript的内置类型,JavaScript数组的功能特别强大.下面简单介绍一下JavaScript数组. 1.JavaScript数组的核心功能点 JavaScript数组有如下的核心 ...
- JavaScript 数组遍历的五种方法(转)
转自:JavaScript 数组遍历的五种方法 这篇文章主要介绍了JavaScript 数组遍历的五种方法,帮助大家更好的理解和学习使用JavaScript,感兴趣的朋友可以了解下 在使用 JavaS ...
- 史上最全JavaScript数组对象详解(二)
JavaScript数组对象详解(二) 上一篇博客我们讲到了JavaScript数组对象的创建,访问和属性,接下来一篇博客主要讲一下JavaScript数组对象的方法及使用.说到数组的方法,主要分为两 ...
- 3种JavaScript 数组转换为字符串的方法
英文 | https://javascript.plainenglish.io/how-to-convert-a-javascript-array-into-a-string-f066c8839a1d ...
最新文章
- 同样是AI技术,为什么只有一加6称得上“全速”旗舰?
- Redis数据库简介与(CentOS 7)编译安装
- openwrt使用3G上网卡
- Monitorix下个版本可能支持postgresql
- 用Jmeter制造软件测试数据
- OpenYurt:延伸原生 Kubernetes 到边缘场景下的落地实践
- linux 查redis状态_干货:用案例代码详解Redis中的事件驱动模型
- 可视化计算java_Java可视化计算器
- efcore 实体配置_创建并配置模型
- 推荐算法--利用用户标签数据(04)
- conda安装pytorch1.10.1+paddlepaddle-gpu2.2.1+cuda10.2+cudnn7.6.5
- Nmap源码分析(整体架构)
- 苹果手机怎么编辑word文档_可以一键导入word图文的微信编辑软件有什么?编辑器怎么使用?...
- Android 壁纸设置代码 详解
- 【ACL'21】弱标签的垃圾数据,也能变废为宝!
- Android Gradle动态打32位或者64位的包
- CentOS yum方式升级内核kernel
- ShowWindow 函数
- Oracle 错误代码详解及解决方式--ORA
- 语义分割网络-BiSenet
热门文章
- win10设置HTML桌面背景,win10系统怎么更换桌面壁纸?windows10更换桌面壁纸的方法...
- 文件夹加密软件排行榜
- 机器学习中分类和聚类的区别
- ADMM算法在神经网络模型剪枝方面的应用
- 2022中国边缘计算企业20强
- RHCE红帽考试认证考试模拟题(与真题区别是一些名称不同) 答案见下个博文
- 2d开源游戏引擎_前5名:构建出色的CLI,开源2D游戏引擎等
- B站飞机大战源码、素材
- 栈的基本操作(C/C++)
- matlab 卷积改变步长,转载“MATLAB卷积函数改进”