1. forEach
- 不能使用return中止循环
var arr=[1,3,2,4];
arr.forEach((item,index)=>{
console.log(item);//1 3 2 4,每一项都打印出来了
return;
})
- 使用break中止循环会报错
var arr=[1,3,2,4];
arr.forEach((item,index)=>{
console.log(item);
break;//报错
})
2.map
map同forEach,但是map可以使用return,改变每一项的值,forEach则没有返回值
var arr = [1, 3, 2, 4];
var newArr = arr.map((item, index) => {
return item*2;
})
console.log(newArr);
//[2, 6, 4, 8],
不仅有返回值,还可以进行计算
var arr = [1, 3, 2, 4];
var newArr = arr.forEach((item, index) => {
return item;
})
console.log(newArr);//undefined,返回值
3.for in
可以使用break中断循环,使用方法跟对象的循环一样
var arr = [1, 3, 2, 4];
for (var k in arr) {
console.log(k, arr[k]); // 0 1
break
}
4.for of
- 可以循环数组和字符串,但是不能循环对象(因为对象,没有索引和长度,不具有迭代的特征)
- 可以使用break中断循环
var arr = [1, 3, 5, 4];
for (var k of arr) {//of后传数组,k代指循环索引
console.log(k);//0 3 5
if (k == 5) {//循环到5那项后,停止循环
break;
}
}
var arr = [1, 3, 5, 4];
for (var k of arr.keys()) {//of后传数组,k代指循环索引
console.log(k);//0 1 2
if (k == 2) {//索引为2时,停止循环
break;
}
}
entries(),把每一项和对应的索引放入一个数组中
var arr = [1, 3, 5, 4];
for (var k of arr.entries()) {//of后传数组,k代指循环索引
console.log(k);// [0, 1]
break;//停止循环,只打印一项键值对
}