Js循环的几种方法

更新日期: 2019-12-16阅读: 2.2k标签: 循环

1、for 常用于循环数组  

var arr = [1,2,3,4,5]
for(let i = 0;i<arr.length;i++){console.log(i)}


2、for in 

常用来循环对象,不建议循环数组,因为i是字符串 可能会有隐患问题,for in 循环会找到 prototype 上去,所以最好在循环体内加一个判断,就用 obj[i].hasOwnProperty(i),这样就避免遍历出太多不需要的属性

var obj = {name:'shao',age:'27'}

for(let i in obj){
 if(obj[i].hasOwnProperty(i)){
  console.log(i,0bj[i])
 }
}


3、forEach: 

不用知道数组长度,只需要第一个参数(i 下标对应得value), forEach在元素被执行完之前  无法停止;如果你必须要停止,可以尝试 try catch 语句,就是在要强制退出的时候,抛出一个 error 给 catch 捕捉到,然后在 catch 里面 return,这样就能中止循环了,如果你经常用这个方法,最好自定义一个这样的 forEach 函数在你的库里。

let arr = [1,2,3];
arr.forEach( (i,index)=>{ console.log(i,index)})// 1 0// 2 1// 3 2


4、map:

map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。map必须要有返回值,否则为[undefined, undefined, undefined],长度和arr保持一致
注意:map 和 forEach 方法都是只能用来遍历数组,不能用来遍历普通对象。

let arr = [1,2,3];
let tt = arr.map( function(i){  console.log(i)  return i*2;})// [2,4,6]


5、for of 循环 

es6语法能代替forin和foreach   注意兼容性

let arr = ['name','age'];for(let i of arr){console.log(i)}// name// age


6、filter 

通过一定规则过滤掉部分元素  不改变原来的数组

let arr = [1,2,3];let tt = arr.filter( function(i){  return i>1; })// [2,3]


7、some() 

方法用来检测数组中是否有满足条件的一个或者多个元素  如果有就返回true  不改变原数组

let arr = [1,2,3];let tt = arr.some(function(i){return i>1;})// true


8、every

用来检测数组中每一项是否都符合条件  如果是就返回true  不改变原数组

let arr = [1,2,3];
let tt = arr.some(function(i){return i>1;})// 检测数组中元素是否都大于1
// false


链接: https://www.fly63.com/article/detial/6863

跳出 forEach

使用for...in遍历对象时,会遍历原型链上的可枚举属性,这可能会导致一些意想不到的问题。所以你一定收到过这样的建议,使用数组的forEach来代替for...in循环。本文给大家总结了5种在forEach中跳出循环的变通之法

JavaScript循环下的async/await

在进行业务开发的过程中,使用了数组的高级函数map,同时使用了ES6语法async/await,发现在map循环下任务是异步执行的,并不符合预期。Array的循环方法map、forEach、filter、reduce、some、every等是并行迭代,可以理解为async/await的效果是无效的

如何中断forEach循环

在使用for循环的时候可以使用break 或者return语句来结束for循环(return直接结束函数),但是如果使用forEach循环如何跳出循环呢?首先尝试一使用return语句----木有效果

用于JavaScript中的循环和同时循环

如果您需要重复大量的代码数百次,这会变得非常笨拙。而且,它也不是很有用。例如,如果希望它重复X次呢?这就是循环的用武之地。次数通常由变量决定,但也可以由实际数字决定。

Js中循环执行

循环:就是一遍又一遍执行相同或者相似的代码,循环的两个要素:循环体:重复执行的代码;循环条件:控制循环的次数

为啥要放弃for循环?

创建一个新的数组,新的数组中的元素是通过检查指定数组中符合条件的元素;注意:1. filter()不会对空数组进行检测;2. filter()不会改变源是数组;

解决使用Vue-Router出现无限循环问题

我在项目里面用到了的是全局守卫,beforeEach,方便管理 不过遇到了一个问题,就是在beforeEach()中设置好判断条件后出现了无限循环的问题 当时的代码如下:

Node.js事件循环

对于本文中一些知识点任然有些模糊,懵懵懂懂,一直都在学习中,通过学习事件循环也看了一些文献,在其中看到了这一句话:除了你的代码,一切都是同步的,我觉得很有道理,对于理解事件循环很有帮助。

关于for循环中使用setTimeout的四种解决方案

我们先来简单了解一下setTimeout延时器的运行机制。setTimeout会先将回调函数放到等待队列中,等待区域内其他主程序执行完毕后,按时间顺序先进先出执行回调函数。本质上是作用域的问题

vue 全局前置守卫引起死循环的原因与解决方法

我们经常会用到全局前置守卫,如判断用户有没有登陆过,如果登陆过就直接跳到目的页面,如果没有登陆过,就跳转到登陆页。先看官网对全局前置守卫的介绍

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!