js 循环(for ,for...in... , for...of... ,foreach)

1.for

eg:利用for循环计算1 * 2 * 3 * ... * 10的结果:

var sum = 1;

for(var i = 2;i < 11;i++){

  sum *=  i;

}

console.log(sum);

2.for...in...

var o = {
    name: 'Jack',
    age: 20,
    city: 'Beijing'
};
for (var key in o) {
    console.log(key); // 'name', 'age', 'city'

console.log(o[key]); // 'Jack', '20', 'Beijing'
}
要过滤掉对象继承的属性,用hasOwnProperty()来实现.
var a = ['A', 'B', 'C'];
for (var i in a) {
    console.log(i); // '0', '1', '2'
    console.log(a[i]); // 'A', 'B', 'C'
}
注意:for ... inArray的循环得到的是String而不是Number
 

3.for...of...,是ES6引入的新的语法

eg:

var a = ['A', 'B', 'C'];
var s = new Set(['A', 'B', 'C']);
var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
for (var x of a) { // 遍历Array
    console.log(x);
}
for (var x of s) { // 遍历Set
    console.log(x);
}
for (var x of m) { // 遍历Map
    console.log(x[0] + '=' + x[1]);
}
//A B C
//A B C

//1=x 2=Y 3=Z

4.forEach()方法是ES5.1标准引入的
var a = ['A', 'B', 'C'];

a.forEach(function (element, index, array) {
   // element: 指向当前元素的值
   // index: 指向当前索引
   // array: 指向Array对象本身
   console.log(element + ', index = ' + index);
});

var s = new Set(['A', 'B', 'C']);
s.forEach(function (element, sameElement, set) {
    console.log(element);
});


var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
m.forEach(function (value, key, map) {
    console.log(value);
});




 
 
原文地址:https://www.cnblogs.com/hehuiqiong/p/12851091.html