放弃for循环吧
前言
for(var i=0;i<array.length;i++){}这个可以是初学者必学的知识,也是JS中必不可少的功能,但如果对性能要求较高的小伙伴有了解过就会发现,for循环性能不高且代码冗余,而且如果使用双重for循环,浏览器页面奔溃的几率也会大大的提高;于是本篇文章会讲解替代for循环的方法,如果有更好的方法的小伙伴,也欢迎留言,大家一起讨论成长。
1. for of
for of类似java中的加强for,性能优于普通的for循环,直接可以取到值,更重要的一点就是,相较于forEach(),for of是可以使用continue和break的!
const array = ['Tom','Jerry','Rechard'];
for(let val of array){
if(val === 'Jerry') break;
console.log(val);//Tom
}
2.filter()
filter()可以用来创建一个新数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
注意:1.filter不会改变原素组,返回一个新数组; 2.filter不会对空数组进行检测,效率优于for循环;
const array = [34, 65, 87, 48, 99];
// filter() 方法
const arrNew = array.filter(num => {
return num >= 66;
});
console.log(arrNew); // [ 87, 99 ]
3.find()
find()就是在数组中找打符合条件的一个元素,找到之后就停止循环,如果没有符合条件的元素就返回undefined.
注意:1.find不会改变原数组,只是单独返回某个元素;2.find不会对空数组进行检测,效率优于for循环;
const array = [34, 65, 87, 48, 99];
// find() 方法
const arrNew = array.find(num => {
return num >= 66;
});
console.log(arrNew); //
4.map()--划重点!
map()数组中的元素为原始数组元素调用函数处理后的值,即新数组里面的值都是被转化为自己想要的类型。
注意:1.map不会改变原数组;2.map不会对空数组进行检测;
const array = [1, 3, 4, 5];
const res = array.map((num)=>{
return num * num;
})
console.log(res) // [ 1, 9, 16, 25 ]
5.forEach()
forEach()效率也是高于普通的for循环,但是能用for of的情况下优先用for of,这个forEach一般也是不推荐使用,性能这一块和for of相差无几。
const array = [1, 2, 3, 4]
array.forEach(val =>{
console.log(val)
}) //
总结
以上五个循环各具特色,小伙伴们可以根据实际业务场景来使用不同的功能,希望能对大家有帮助 ^_^。
放弃for循环吧的更多相关文章
- Java从入门到放弃——03.循环和判断
本文目标 选择结构:if,switch 循环结构:for , foreach ,while,do while 跳出语句:break,continue 1.选择结构 if: if(判断语句){ } s ...
- 避免for循环
http://www.360doc.com/content/10/0610/22/1217721_32411251.shtml 避免使用for循环: 在Matlab中,for循环运算效率非常低,因为M ...
- php循环跳出
PHP中的循环结构大致有for循环,while循环,do{} while 循环以及foreach循环几种,不管哪种循环中,在PHP中跳出循环大致有这么几种方式: 代码: <?php $i = 1 ...
- python第二课--分支结构与循环结构
if语句---分支结构 在Python中,要构造分支结构可以使用if.elif和else关键字.所谓关键字就是有特殊含义的单词,像if和else就是专门用于构造分支结构的关键字,很显然你不能够使用它作 ...
- python分支和循环结构
本文收录在Python从入门到精通系列文章系列 1. 分支结构 1.1 应用场景 迄今为止,我们写的Python代码都是一条一条语句顺序执行,这种代码结构通常称之为顺序结构.然而仅有顺序结构并不能解决 ...
- PYTHON 100days学习笔记004:循环结构
目录 Day04 - 循环结构 1. 循环结构的应用场景 2.for-in循环 3. while循环 4. 练习 4.1 输入一个数判断是不是素数. 4.2 输入两个正整数,计算最大公约数和最小公倍数 ...
- javascript 笔记!
1.通过javascript向文档中输出文本 document是javascript的内置对象,代表浏览器的文档部分 document.write("Hello Javascript&quo ...
- Android 线程通讯类Handler
handler是线程通讯工具类.用于传递消息.它有两个队列: 1.消息队列 2.线程队列 消息队列使用sendMessage和HandleMessage的组合来发送和处理消息. 线程队列类似一段代码, ...
- JAVA第3,4课(内容合并)
JAVA 第三课 代码执行顺序
随机推荐
- cuda 9.0
https://docs.nvidia.com/cuda/archive/9.0/index.html cuda9.0工具包
- Redis集群方式
Redis有三种集群方式:主从复制,哨兵模式和集群. 1.主从复制 主从复制原理: 从服务器连接主服务器,发送SYNC命令: 主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用 ...
- JSP+Structs+JDBC+mysql实现的诚欣电子商城
项目简介 项目来源于:https://github.com/SuperiorNature/Java-Enterprise-electronic-mall 本系统是基于JSP+Structs+JDBC+ ...
- Zookeeper实现服务注册/发现
what that? Zookeeper在分布式开发中使用频繁,但许多框架都对其进行了封装,初学者可能无法较好的理解其工作原理,该文章演示了使用Zookeeper实现服务注册,服务发现的简单demo, ...
- RocketMQ系列(三)消息的生产与消费
前面的章节,我们已经把RocketMQ的环境搭建起来了,是一个两主两从的异步集群.接下来,我们就看看怎么去使用RocketMQ,在使用之前,先要在NameServer中创建Topic,我们知道Rock ...
- Laravel:No application encryption key has been specified.
其实吧,这个就是你没有生成密钥 你首先去看看,如果是刚刚下载的lavavel应该会有一个.env.example文件在根目录下,然后修改这个文件名,改成.env 然后用命令行去执行php artisa ...
- opencv3.1.0 计算机中丢失 opencv_world310d.dll _vs2017解决方法
---------------------------opencv1.exe - 系统错误---------------------------无法启动此程序,因为计算机中丢失 opencv_worl ...
- 超详细Maven技术应用指南
该文章,GitHub已收录,欢迎老板们前来Star! GitHub地址: https://github.com/Ziphtracks/JavaLearningmanual 搜索关注微信公众号" ...
- Python 为什么不支持 i++ 自增语法,不提供 ++ 操作符?
在 C/C++/Java 等等语言中,整型变量的自增或自减操作是标配,它们又可分为前缀操作(++i 和 --i)与后缀操作(i++ 和 i--),彼此存在着一些细微差别,各有不同的用途. 这些语言的使 ...
- Centos7下的MySQL5.6安装
yum install wget yum install perl perl-devel cd /usr/local/src wget https://cdn.mysql.com//Downloads ...