当前位置:编程学习 > JS >>

js递归、循环、迭代、遍历和枚举区别和js的遍历方法

递归、循环、迭代、遍历和枚举
递归:一个函数不断调用自身的行为
循环:指的是在满足条件的情况下,重复执行同一段代码。一般语言都会有三种类型的循环语句:for语句、while语句和do While语句
迭代:按照某种顺序逐个访问列表中的每一项
遍历:树形结构的一种重要运算,指的是按照一定的规则访问树形结构中的每个节点,而且每个节点都只访问一次。
枚举:在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常(但不总是)重叠。枚举是一个被命名的整型常数的易做图!

1.for循环

var arr = [33, 21, 32]
for(var i = 0; i < arr.length; i++) { // 这里的i是代表数组的下标
    console.log(i); // 33, 21, 32
};

2.for…in

var arr = [33, 21, 32]
for(var item in arr) { // item遍历数组时为数组的下标,遍历对象时为对象的key值,通常用来遍历对象
    console.log(item); // 33, 21, 32
};

3.for…of

var arr = [33, 21, 32]
for(var item of arr) { // item代表数组里面的元素
    console.log(item); // 33, 21, 32
};

这是最简洁、最直接的遍历数组元素的语法

这个方法避开了for-in循环的所有缺陷

与forEach()不同的是,它可以正确响应break、continue和return语句

性能要好于forin,但仍然比不上普通for循环
4.foreach

var arr = [33, 21, 32]
arr.foreach((item,index)=>{
console.log(item)//33, 21, 32
console.log(index)//0,1,2
})

常用的return false是可以终止代码继续往下执行的,但是在forEach遍历中,并没有终止循环,所以在用forEach的时候,要考虑使用场景。

5.map

var arr = [33, 21, 32];
arr.map((item,index) => { // item代表数组里面的元素
    console.log(item); // 33, 21, 32
    return item * 2; // 返回一个处理过的新数组[66,42,64]
})

map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

map() 方法按照原始数组元素顺序依次处理元素。

这种方式也是用的比较广泛的,虽然用起来比较优雅,但实际效率还比不上foreach

6.every

var arr = [33, 21, 32];
arr.every((item, index, arr) => { // item为数组中的元素,index为下标,arr为目标数组
    return item > 0; // true
    return index == 0; // false
})

every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。
every() 方法使用指定函数检测数组中的所有元素:
如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
如果所有元素都满足条件,则返回 true。

7.filter

var arr = [33, 21, 32];
arr.filter(item => { // item为数组当前的元素
    return item > 32; // [33]
})

8.some

var arr = [33, 21, 32];
arr.some((item, index, arr) => { // item为数组中的元素,index为下标,arr为目标数组
    console.log(item); // 33, 21, 32
    console.log(index); // 0, 1, 2
    console.log(arr); // [33, 21, 32]  
})

数组中只要检测到有一个元素满足,则整个表达式返回 true。
如果所有元素都满足条件,则返回 true,如果所有元素都不满足条件,则返回false。
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,