js 循环遍历变量的几种方式

JavaScript08

js 循环遍历变量的几种方式,第1张

js循环遍历变量的方式有以下几种: 1.for(let i = 0i <5i++) 2.forEach 3.for of 4.for in 那么我们来看下这几种遍历方式的用法,以及退出循环的方法 1.for 这是最常用的遍历方法,for用来遍历数组,可以使用break 退出循环,使用continue来跳过本次循环。 2.forEach 除了抛出异常以外,没有办法中止或跳出 forEach() 循环。 并且forEach不会改变原来的数组 3.for of for of 可以迭代 可迭代对象 (包括 Array , Map , Set , String , TypedArray , arguments 对象等等) 对于for of,可以由break, throw 或return终止, 可以用continue略过此次循环。在这些情况下,迭代器关闭。

迭代:

1、自己调用自己的方法,或者称递归。这个应该不用多说。

2、还有一种解释:很多程序有迭代器。这是一种用于“遍历”数组的工具对象。一般遍历一个数组都是使用循环变量从0到最后一个,或者使用链表遍历量表中内容。使用迭代器可以不关注数组的具体实现方式,遍历数组中所有成员。

遍历:

对数据结构中每一个成员都进行一次访问的操作就是遍历。比如遍历列表。最为常见得问题是遍历树,遍历树的常见方法有:先序/中序/后序,或者按照另一个纬度划分有,广度遍历和深度遍历。相关具体算法可以查找其他资料。

ES6 一共有 5 种方法可以遍历对象的属性。

(1)for...in

for...in 循环遍历对象自身的和继承的可枚举属性(不含 Symbol 属性)。

(2)Object.keys(obj) ie9

Object.keys 返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含 Symbol 属性)的键名。

(3)Object.getOwnPropertyNames(obj) ie9

Object.getOwnPropertyNames 返回一个数组,包含对象自身的所有属性(不含 Symbol 属性,但是包括不可枚举属性)的键名。

(4)Object.getOwnPropertySymbols(obj)

Object.getOwnPropertySymbols 返回一个数组,包含对象自身的所有 Symbol 属性的键名。

(5)Reflect.ownKeys(obj)

Reflect.ownKeys 返回一个数组,包含对象自身的(不含继承的)所有键名,不管键名是 Symbol 或字符串,也不管是否可枚举。

以上的 5 种方法遍历对象的键名,都遵守同样的属性遍历的次序规则。

​ 其中兼容性最好的是for... in来进行遍历,因为我们通常只需要遍历对象自身拥有的属性 所以使用 Object.prototype.hasOwnProperty() 兼容到ie5.5 方法来排除继承的属性

注意:即使属性的值是 null 或 undefined ,只要属性存在, hasOwnProperty 依旧会返回 true 。

​ 如果不在意兼容性问题,用keys方法,搭配for... of来遍历也不错,、

​ for...of是es6引入的用于遍历可迭代对象的语法,相当于python里的for in。

​ js的for...in别扭的地方在于,遍历数组和对象都是返回的key值,遍历数组是下标值。for...of遍历数组会返回每一个值,跟foreach类似的效果,但是对于对象,只支持实现了迭代器的对象。