(這些例子已經(jīng)在node.js 6.9.x下,運(yùn)行通過)js中循環(huán)語句有forEach,for in,for of 三種了一般的遍歷數(shù)組的方法:- var array = [1,2,3,4,5,6,7];
- for (var i = 0; i < array.length; i) {
- console.log(i,array[i]);
- }
結(jié)果如下:0 11 22 33 44 55 66 7用for in的方遍歷數(shù)組- for(let index in array) {
- console.log(index,array[index]);
- };
結(jié)果如下:0 11 22 33 44 55 66 7上述兩個(gè)結(jié)果是一樣的.也可以用forEach- array.forEach(v=>{
- console.log(v);
- });
結(jié)果如下:1234567forEach的缺點(diǎn)也是很明顯的,就是不能中斷除了上面方法,還可以用forEach可以使用forEach方法,這個(gè)是數(shù)組對(duì)象自帶的:- array.forEach(function(v) {
- console.log(v);
- });
結(jié)果如下:1234567用for in不僅可以對(duì)數(shù)組,也可以對(duì)enumerable對(duì)象操作如下:代碼- var A = {a:1,b:2,c:3,d:"hello world"};
- for(let k in A) {
- console.log(k,A[k]);
- }
結(jié)果如下:a 1b 2c 3d hello world在ES6中,增加了一個(gè)for of循環(huán),使用起來很簡(jiǎn)單 對(duì)于數(shù)組- for(let v of array) {
- console.log(v);
- };
結(jié)果如下:1234567對(duì)于字符串則可以- let s = "helloabc";
- for(let c of s) {
- console.log(c);
- }
結(jié)果如下:helloabc- for(let index in s) {
- console.log(index,s[index]);
- }
結(jié)果如下:0 h1 e2 l3 l4 o5 a6 b7 c總結(jié)來說:for in總是得到對(duì)像的key或數(shù)組,字符串的下標(biāo),而for of和forEach一樣,是直接得到值結(jié)果for of不能對(duì)象用對(duì)于新出來的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);
- }
結(jié)果如下:abdc--------------------a 1b 2999 3然這個(gè)用for in是遍歷不了的
|