1. 对象的遍历

1 let obj = {'0' : 'a', '1' : 'b', '2' : 'c' };
  • Object.keys()(输入object,返回array)
1 Object.keys(obj).forEach( key =>{
2          console.log(key, obj[key]); // 0 a, 1 b, 2 c
3 });
  • for ... in ...
1 for ( let i in obj ) {
2     console.log(i, ":", obj[i]); // 0 a, 1 b, 2 c
3 }

2.  数组的遍历

1 var arr= [1,2,3,4];
  • forEach(循环无法停止,会一直进行到底):
  • map方法很相似,也是对数组的所有成员依次执行参数函数。但是,forEach方法不返回值,只用来操作数据。这就是说,如果数组遍历的目的是为了得到返回值,那么使用map方法,否则使用forEach方法。
  • forEach的用法与map方法一致,参数是一个函数,该函数同样接受三个参数:当前值、当前位置、整个数组
1 arr.forEach( function(val, index) {
2    console.log(val, index); // 1 0, 2 1, 3 2, 4 3
3 });
1 arr.forEach((val, index) =>{
2    console.log(val, index); // 1 0, 2 1, 3 2, 4 3
3 });
1 function log(element, index, array){
2   console.log('['+index+']=' + element);//"[0]=2" "[1]=5" "[2]=9"
3 }
4 [2,5,9].forEach(log);
  • 上面代码中,forEach遍历数组不是为了得到返回值,而是为了在屏幕输出内容,所以不必使用map方法
  • forEach方法也可以接受第二个参数,绑定参数函数的this变量
1 var out = [];
2 
3 [1, 2, 3].forEach(function(elem) {
4   this.push(elem * elem);
5 }, out);
6 
7 console.log(out); //[1,4,9]
  • 上面代码中,空数组outforEach方法的第二个参数,结果,回调函数内部的this关键字就指向out
  • forEach方法无法中断执行,总是会将所有成员遍历完。如果希望符合某种条件时,就中断遍历,要使用for循环
1 var arr = [1, 2, 3];
2 for (var i = 0; i < arr.length; i++) {
3   if (arr[i] === 2) break;
4   console.log(arr[i]); //1
5 }
  • 上面代码中,执行到数组的第二个成员时,就会中断执行。forEach方法做不到这一点
  • forEach方法也会跳过数组的空位
1 var log = function (n) {
2   console.log(n + 1);
3 };
4 
5 [1, undefined, 2].forEach(log); // 2 NaN 3
6 [1, null, 2].forEach(log); // 2 1 3
7 [1, , 2].forEach(log); // 2 3
  • 上面代码中,forEach方法不会跳过undefinednull,但会跳过空位
  • for
1 for ( let i = 0 ; i < arr.length; i++){
2     console.log(arr[i]);  // 1 2 3 4
3 }
  •  for .. in ...
1 for ( let i in arr ) {
2      console.log(i, ":", arr[i]); // 0:1, 1:2, 2:3, 3:4
3 }
  • for .. of ...
1 for ( let value of arr ) {
2         console.log(value); // 1 2 3 4
3 }
  • map 
1 let arr1 = arr. map((n) =>{
2      return n+1
3 })
4 console.log(arr1); // [ 2, 3, 4, 5 ]
  • filter
1 let arr2 = arr.filter(item =>{
2      return (item === 1 )
3 })
4 console.log(arr2); //[1]