zoukankan      html  css  js  c++  java
  • NO --- 25 Object.keys()

    大家在遍历对象时经常会用到Object.keys()这个方法,但是有时候遍历出来的keys会排序,而有时候却按照对象中的顺序来出现,先看下面两个例子:

    // 例子1
    const obj = { 100: '一百', 2: '二', 7: '七' } Object.keys(obj) // ["2", "7", "100"]
    // 例子2 const obj = { c: 'c', a: 'a', b: 'b' } Object.keys(obj) // ["c", "a", "b"]

    这时就会发现两个例子的区别,例子1中的key会排序,例子2中则原样输出,这是为什么呢?

    答案:

    对于上面那个问题先给出结论,Object.keys在内部会根据属性名key的类型进行不同的排序逻辑。分三种情况:

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

    这就解释了上面的问题。

    具体原因可以参考:https://github.com/berwin/Blog/issues/24

  • 相关阅读:
    【leetcode】修剪二叉搜索树
    053-621
    053-620
    053-619
    053-618
    053-617
    053-616
    053-615
    053-614
    053-613
  • 原文地址:https://www.cnblogs.com/cb-bin/p/13453549.html
Copyright © 2011-2022 走看看