js中的循环 & 迭代

最常见的便是for循环和while循环,下面主要比较map、foreach;for in、Object.keys()、getOwnPropertyNames()之间的区别。
虽然后面三个方法都可以用来迭代数组和对象,但是我们应该尽量不要使用这些方法来遍历数组。

map和forEach

首先两者参数相同:

  • arr.map(function(val,index,arr), thisVal) ;
  • arr.forEach(function(val,index,arr), thisVal).
    区别在于回调函数作用不一样,map返回处理过的数组,而forEach无返回值。两者均不改变原数组。所以forEach得作用和普通的for循环是一样的。
for in、Object.keys()和getOwnPropertyNames()

首先,三个方法都可以迭代数组,但不推荐。

  • for(key in object)可以遍历对象object的所有可枚举属性值(包括实例属性和原型链属性);
  • Object.keys(object)同样可以遍历对象object的可枚举属性,但不包括原型链上的属性,返回属性数组。
  • object.getOwnPropertyNames()遍历object的所有属性(包括不可枚举的属性,比如function),但同样不包括原型链上的属性,返回遍历的属性数组。
Jquery中的$.map()和 $.each()

Jquery对遍历提供了$.map()喝$.each()方法,和js原生的map和forEach类似,但这两个方法不只是遍历数组,还能遍历对象,$.map()不管遍历数组还是对象,返回值任然是数组。

细节

  • map和forEach中使用break;语句无效,需要使用try catch语句处理。

你可能感兴趣的:(js中的循环 & 迭代)