zoukankan      html  css  js  c++  java
  • Object.keys()方法 返回对象属性数组

    MDN语法

    Object.keys(obj)

    参数obj:要返回其枚举自身属性的对象。

    返回值:一个表示给定对象的所有可枚举属性的字符串数组。

    1.传入一个对象,返回的的是所有属性值
    var obj2={
        "b":5,
        "7":8,
        "6":8,
        "a":6,
        "8":9,
        "c":10,
        "-3":5
    }
    console.log(Object.keys(obj2)) // ["6", "7", "8", "b", "a", "c", "-3"]
    

    可以看到,返回值数组里数字在前面,且会自动排序

    这是因为Object.keys在内部会根据属性名key的类型进行不同的排序逻辑。分三种情况:

    1. 如果属性名的类型是Number,那么Object.keys返回值是按照key从小到大排序
    2. 如果属性名的类型是String,那么Object.keys返回值是按照属性被创建的时间升序排序。
    3. 如果属性名的类型是Symbol,那么逻辑同String相同

    (负数是作为字符串处理的,也是按照创建的时间顺序)

    2.传入一个数组,返回的是索引值
    var arr=[2,5,7,3,"t","7",6]
    console.log(Object.keys(arr)) //["0", "1", "2", "3", "4", "5", "6"]
    
    3.传入一个字符串,返回的是索引值
    var str="hello sansan"
    console.log(Object.keys(str)) //["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"]
    
    4.构造函数,返回空数组或属性值
    function sansan(width,long,height){
        this.width=width;
        this.long=long;
        this.height=height;
        this.area=function(){
           return this.height*this.width*this.long;
        }
    }
    console.log(Object.keys(sansan)) //[]
    var xiamu=new sansan(2,3,4)
    console.log(Object.keys(xiamu)) //["width", "long", "height", "area"]
    
    参考博客

    5分钟彻底理解Object.keys

    注意

    在ES5里,如果此方法的参数不是对象(而是一个原始值),那么它会抛出 TypeError。在ES2015中,非对象的参数将被强制转换为一个对象。

    Object.keys("foo");
    // TypeError: "foo" is not an object (ES5 code)
    
    Object.keys("foo");
    // ["0", "1", "2"]                   (ES2015 code)
    
  • 相关阅读:
    Sword 17
    Sword 16
    Sword 15
    Sword 14-II
    Sword 14-I
    Sword 13
    Sword 11
    Sword 10-II
    Sword 10
    【python+selenium】三种等待方式
  • 原文地址:https://www.cnblogs.com/kerin/p/14158240.html
Copyright © 2011-2022 走看看