循环数组的方法及区别

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;//停止循环,只打印一项键值对
    }

你可能感兴趣的:(数组Array)