美文网首页前端相关
对于遍历对象的几种方法的总结

对于遍历对象的几种方法的总结

作者: DeeJay_Y | 来源:发表于2017-10-13 13:29 被阅读101次

对于对象的遍历,

     let obj = {a: 'b',c: 'd'}

一, for in (一般搭配hasOwnProperty来使用) 遍历原型链上可枚举的

    let obj = {
        a: 'b',
        c: 'd'
    }
    for (let key in obj) {
        console.log('key: ' + key + ',' + 'value: ' + obj[key])
    }
   // key: a,value: b
  // key: c,value: d

值得注意的是,for in 遍历对象,会将原型链上的所有可枚举的属性也遍历到。

    Object.prototype.test = 'myTest'
    let obj = {
        a: 'b',
        c: 'd'
    }
    for (let key in obj) {
        console.log('key: ' + key + ',' + 'value: ' + obj[key])
    }
    //key: a,value: b
    //key: c,value: d
    //key: test,value: myTest

对于不可枚举的属性(enumerable: false),比如说toString方法,那么for in 就不会遍历到

//    Object.prototype.test = 'myTest'
    Object.defineProperty(Object.prototype,'test',{
        enumerable: false, // 设为不可枚举之后  就无法遍历到,改为true即可遍历到
        value: 'myTest'
    })
    let obj = {
        a: 'b',
        c: 'd'
    }
    for (let key in obj) {
        console.log('key: ' + key + ',' + 'value: ' + obj[key])
    }

由于for in 遍历会遍历原型链上的属性,所以一般我们想要遍历对象本身的属性的时候,要加hasOwnProperty来进行一层过滤。

    Object.prototype.test = 'myTest'
    let obj = {
        a: 'b',
        c: 'd'
    }
    for (let key in obj) {
        if (obj.hasOwnProperty(key)) {
            console.log('key: ' + key + ',' + 'value: ' + obj[key])
        }
    }
    //key: a,value: b
    //key: c,value: d

二,Object.keys() 只遍历自身的可枚举属性

使用Object.keys()只能遍历到自身本身并且是可枚举的属性

    Object.prototype.test = 'myTest'
    let obj = {
        a: 'b',
        c: 'd'
    }
    let keys = Object.keys(obj)
    console.log(keys) //["a", "c"]
    Object.prototype.test = 'myTest'

    let obj = {
        a: 'b',
        c: 'd'
    }
    Object.defineProperty(obj,'non-em',{
        enumerable: true, //enumerable为false时不可遍历 为true时可以遍历到
        value: 'deejay'
    })
    let keys = Object.keys(obj)
    console.log(keys) // ["a", "c", "non-em"]

三, Object.getOwnPropertyNames 遍历所有自身属性 包含不可枚举的

    Object.prototype.test = 'myTest'
    let obj = {
        a: 'b',
        c: 'd'
    }
    Object.defineProperty(obj,'non-em',{
        enumerable: false, //enumerable为false时Object.getOwnPropertyNames也能遍历到
        value: 'deejay'
    })
    let keys = Object.getOwnPropertyNames(obj)
    console.log(keys)  //["a", "c", "non-em"]

相关文章

  • 对于遍历对象的几种方法的总结

    对于对象的遍历, 一, for in (一般搭配hasOwnProperty来使用) 遍历原型链上可枚举的 值得...

  • js中对象的遍历

    在项目中对对象的遍历在所难免,现总结以下几种遍历对象的方法。假设我们有一个对象,var obj={name:'li...

  • JS常用方法整理-遍历对象

    1. 简介 JS中经常需要对对象的属性进行遍历,下面我们来总结一下JS遍历对象属性的几种方法。 2. for......

  • day1

    oc对象读取属性值的几种方法 遍历类所有属性名称 遍历集合的几种方式 协议(Protocol)类似于java的in...

  • 遍历对象的几种方法

    预定义如下对象: for in 用于遍历自身和原型对象的可枚举的属性 输出:mykeymyFunparentKey...

  • 高程阅读笔记——对象

    遍历对象的几种方法 for in 会遍历自身以及原型链上所有可枚举属性 Object.keys 遍历自身可枚举属性...

  • javascript/jquery-遍历数组/对象的几种方式

    遍历数组/对象的几种方式 常用的方法:for、for in、for of(es6语法)、forEach、map、f...

  • js遍历对象的几种方法

    第一种: for......in const obj = { id:1, name:'zh...

  • js中数组的遍历

    在平时的工作中,对数组,对象的遍历操作是非常常见的。现就遍历的几种方式做以下总结。 数组的遍历 假设有一个数组va...

  • JS关于对象遍历的几种方法

    1.for in 主要用于遍历对象的可枚举属性,例如自有属性,继承自原型的属性: 2.Object.keys() ...

网友评论

    本文标题:对于遍历对象的几种方法的总结

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