1. 程式人生 > >js筆記一:js中forEach,for in,for of迴圈的用法

js筆記一:js中forEach,for in,for of迴圈的用法

(這些例子已經在node.js 6.9.x下,執行通過)


js中迴圈語句有forEach,for in,for of 三種了


一般的遍歷陣列的方法:
var array = [1,2,3,4,5,6,7];
for (var i = 0; i < array.length; i) {
    console.log(i,array[i]);
}


結果如下:
0 1
1 2
2 3
3 4
4 5
5 6
6 7


用for in的方遍歷陣列
for(let index in array) {
    console.log(index,array[index]);
};


結果如下:
0 1
1 2
2 3
3 4
4 5
5 6
6 7
上述兩個結果是一樣的.
也可以用forEach
array.forEach(v=>{
    console.log(v);
});


結果如下:
1
2
3
4
5
6
7
forEach的缺點也是很明顯的,就是不能中斷


除了上面方法,還可以用forEach
可以使用forEach方法,這個是陣列物件自帶的:
array.forEach(function(v) {
	console.log(v);
});


結果如下:
1
2
3
4
5
6
7
用for in不僅可以對陣列,也可以對enumerable物件操作
如下:程式碼
var A = {a:1,b:2,c:3,d:"hello world"};
for(let k in A) {
    console.log(k,A[k]);
}


結果如下:
a 1
b 2
c 3
d hello world


在ES6中,增加了一個for of迴圈,使用起來很簡單

 對於陣列
for(let v of array) {
    console.log(v);
};


結果如下:
1
2
3
4
5
6
7
對於字串則可以
let s = "helloabc";
for(let c of s) {
    console.log(c);
}


結果如下:
h
e
l
l
o
a
b
c
for(let index in s) {
    console.log(index,s[index]);
}


結果如下:
0 h
1 e
2 l
3 l
4 o
5 a
6 b
7 c


總結來說:for in總是得到對像的key或陣列,字串的下標,而for of和forEach一樣,是直接得到值
結果for of不能物件用
對於新出來的Map,Set上面
如下
var set = new Set();
set.add("a").add("b").add("d").add("c");
var map = new Map();
map.set("a",1).set("b",2).set(999,3);
for (let v of set) {
    console.log(v);
}
console.log("--------------------");
for(let [k,v] of map) {
    console.log(k,v);
}


結果如下:
a
b
d
c
--------------------
a 1
b 2
999 3

然這個用for in是遍歷不了的

筆記列表: