1.for循环
for 循环是 Js 中最常用的一个循环工具, 经常用于数组的循环遍历。
let arr = [1, 2, 3];
for (let i = 0; i < arr.length; i++) {
console.log(i, arr[i])
}
2.for in循环
or in 循环主要用于遍历普通对象, i 代表对象的 key 值, obj[i] 代表对应的 value, 当用它来遍历数组时候, 多数情况下也能达到同样的效果, 但是你不要这么做, 这是有风险的, 因为 i 输出为字符串形式, 而不是数组需要的数字下标, 这意味着在某些情况下, 会发生字符串运算, 导致数据错误, 比如: '52' +1 = '521' 而不是我们需要的 53。另外for in 循环的时候, 不仅遍历自身的属性, 还会找到 prototype 上去, 所以最好在循环体内加一个判断, 就用 obj[i].hasOwnProperty(i), 这样就避免遍历出太多不需要的属性。
let obj = {
name: 'zhou',
age: '**'
}
for (let i in obj) {
console.log(i, obj[i])
}
3、while 循环同样的遍历 cars 数组, 先用for 循环方法 再比较while循环
我们发现, 它们可以实现同样的效果, 事实上它们底层的处理是一样的, 不过for 循环可以把定义、 条件判断、 自增自减操作放到一个条件里执行, 代码看起来方便一些, 仅此而已。
cars = ["BMW", "Volvo", "Saab", "Ford"];
var i = 0;
while (cars[i]) {
console.log(cars[i] + "<br>")
i++;
};
cars = ["BMW", "Volvo", "Saab", "Ford"];
var i = 0;
while (cars[i]) {
console.log(cars[i] + "<br>")
i++;
};
4、 do-while 循环
do-while 循环是while循环的一个变体, 它首先执行一次操作, 然后才进行条件判断, 是 true 的话再继续执行操作, 是 false 的话循环结束。
let i = 3;
do {
console.log(i)
i--;
}
while (i > 0)
5、 Array forEach 循环
forEach函数 传入一个回调函数 回调函数的第一个参数代表数组的元素 第二个参数代表元素的下标 他会一个一个的传入 直到结束
let arr = [1, 2, 3,123];
arr.forEach(function(i, index) {
console.log(i, index)
})
6、 Array map() 方法
map函数和forEach函数类似一个一个的传参 不过他会返回回调函数中处理后的结果
let arr = [1, 2, 3];
let tt = arr.map(function(i) {
console.log(i)
return i * 2;
})
console.log(tt)//map处理后返回的结果
7、 Array filter() 方法
filter函数也是一个一个传入参数 不过他会返回过滤后的元素 结果为真就返回
let arr = [1, 2, 3];
let tt = arr.filter(function(i) {
return i > 1;
})
8、 Array some() 方法
some方法和filter类似 不过他判断为真或假就返回布尔值
let arr = [1, 2, 3];
let tt = arr.some(function(i) {
return i > 1;
})
10、 Array reduce() 方法
reduce函数是一个累加器 从左到右相加 最后的值为一个 这里传入的参数是1,2,3 函数中就1+2=3 然后3+3=6
reduce回调函数之后加一个0表示在数组的第一位加一个0
遍历数组方式为加0 打印j
let arr = [1, 2, 3];
let ad = arr.reduce(function(i, j) {//0,1 1,2 2,3
return i + j;
},0)//这里加一个0表示把第一个参数i替换成0
console.log(ad)//6
//如果要遍历数组
let arr = [1, 2, 3];
let ad = arr.reduce(function(i, j) {
console.log(j)//1,2,3
},0)
11、 Array reduceRight() 方法
reduceRight() 方法和reduce一样不过是从末尾开始加
let arr = [1, 2, 3];
let ad = arr.reduceRight(function(i, j) {
return i + j;
})
console.log(ad)//6
12、for of 循环
for of 循环是 Es6 中新增的语句, 用来替代
for in 和 forEach, 它允许你遍历 Arrays( 数组), Strings( 字符串), Maps( 映射), Sets( 集合) 等可迭代(Iterable data) 的数据结构, 注意它的兼容性。
他不能遍历对象 对象还是要用for in
let arr = ['name', 'age'];
for (let i of arr) {
console.log(i)
}