/* ES5中的数组遍历方法
    1.for循环
    2.arr.forEach
    3.arr.every
    4.for in
 */

const arr = [1, 2, 3, 4, 5];
// arr.a = 8;

/*  1.for 循环
    可以使用break和continue
 */
function loopByFor(arr) {
    for (let i = 0; i < arr.length; i++) {
        if (arr[i] == 2) {
            continue;
        }
        console.log('loopByFor:' + arr[i]);
    }
}
loopByFor(arr);

/*  2.forEach
    代码简洁,但不可以使用break和continue
 */
function loopByForEach(arr) {
    arr.forEach(function (item) {
        if (item == 2) {
            // continue;
        }
        console.log('loopByForEach:' + item);
    });
}
loopByForEach(arr);

/**
 * 3.数组遍历 arr.every
 * 通过return true来执行循环,return false(默认)不执行循环,相当于break
 * @date 2019-12-20
 * @param {any} arr
 * @returns {any}
 */
function loopByEvery(arr) {
    arr.every(function (item) {
        if (item == 2) {
            // 空处理作用类似continue
        } else {
            console.log('loopByEvery:' + item);
        }

        return true;
    });
}
loopByEvery(arr);

/**
 * 4. for in
 * for in是为对象设计的,数组也是对象,可使用continue和break
 * @date 2019-12-20
 * @param {any} arr
 * @returns {any}
 */

//  arr.a = 8; //数组索引为字符串时,for in可遍历到,前3中方法不可遍历到a属性
function loopByForin(arr) {
    // console.log('loopByForin:' + item);
    // for (const key in object) {
    //     if (object.hasOwnProperty(key)) {
    // 数组是个对象,for in是针对对象遍历

    //     }
    // }
    for (let index in arr) {
        // if (index === 2) { //index是字符串,使用 === 时,continue不生效
        if (index == 2) {
            continue;
        }
        console.log('loopByForin index:' + index + '----value:' + arr[index]);
    }
}
loopByForin(arr);

 

posted on 2019-12-20 15:58  Moriarty-Holmes  阅读(252)  评论(0)    收藏  举报