美文网首页
十一、遍历对象,遍历数组

十一、遍历对象,遍历数组

作者: 懒羊羊3号 | 来源:发表于2019-01-24 16:21 被阅读0次

    1、ES6的for..of遍历,不能遍历对象

    Array.prototype[Symbol.iterator];
    // ƒ values() { [native code] }
     
    String.prototype[Symbol.iterator];
    // ƒ [Symbol.iterator]() { [native code] }
     
    Set.prototype[Symbol.iterator];
    // ƒ values() { [native code] }
     
    Map.prototype[Symbol.iterator];
    // ƒ entries() { [native code] }
     
    Object.prototype[Symbol.iterator];
    // undefined
    //给对象添加遍历器
    Object.prototype[Symbol.iterator] = function() {
        let _this = this
        let index = 0
        let length = Object.keys(_this).length
        return {
            next:() => {
                let value = _this[index]
                let done = (index >= length)
                index++
                return {value,done}
            }
        }
    }
    

    2、遍历对象

    //循环遍历对象自身的和继承的可枚举属性(不含Symbol属性).
    for (const key in obj) { }
    // 返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性)
    Object.keys(obj).forEach(() => {})
    //返回一个数组,包含对象自身的所有属性(不含Symbol属性,但是包括不可枚举属性)
    Object.getOwnPropertyNames(obj)
    //返回一个数组,包含对象自身的所有属性,不管属性名是Symbol或字符串,也不管是否可枚举.
    Reflect.ownKeys(obj)
    for (const [key, values] of Object.entries(obj)) { }
    
    image.png

    对象的方法

    一、Object.assign

    var o1 = { a: 1, b: 1, c: 1 };
    var o2 = { b: 2, c: 2 };
    var o3 = { c: 3 };
    
    var obj = Object.assign({}, o1, o2, o3);
    console.log(obj); // { a: 1, b: 2, c: 3 }
    //object1没有变化
    const object2 = Object.assign({c: 4, d: 5}, object1);
    

    循环

    一、forEach
    break没有用
    return false 只会跳出当前循环,不执行当前循环下面的语句

    var array = ["first","second","third","fourth"];
    // 会遍历数组所有元素,只是执行到第3次师,return false下面的代码不再执行而已
    array.forEach(function(item,index){
        if (item == "first") {
            return false;
        }
        console.log(item);// first,second
    });
    

    二、for
    break有用,跳出循环
    return有用,跳出函数

    相关文章

      网友评论

          本文标题:十一、遍历对象,遍历数组

          本文链接:https://www.haomeiwen.com/subject/vdqujqtx.html