Javascript For/In循环对象到数组

Javascript For/In循环对象到数组,javascript,loops,object,Javascript,Loops,Object,有人能用外行的方式向我解释一下循环在迭代生成语句时发生了什么(对象属性在数组中) 这是计算for/in循环的方式: for each property in object o assign the property name to the left hand side, that is a[i++] 最初i=0,因此: a[0]将获得x/请注意,它获取的是属性名称,而不是其值 a[1]将获得y a[2]将获得z 注意:i++等于i=i+1 前面的代码相当于以下代码: var o =

有人能用外行的方式向我解释一下循环在迭代生成语句时发生了什么(对象属性在数组中)


这是计算for/in循环的方式:

for each property in object o
     assign the property name to the left hand side, that is a[i++]
最初
i=0
,因此:

  • a[0]
    将获得
    x
    /请注意,它获取的是属性名称,而不是其值
  • a[1]
    将获得
    y
  • a[2]
    将获得
    z
  • 注意:
    i++
    等于
    i=i+1

    前面的代码相当于以下代码:

    var o = {x:1, y:2, z:3};
    var a = []
    var i = 0;
    
    for (propertyName in o)
    {
        a[i] = propertyName;
        i = i + 1;
        console.log(o);
    }
    

    它将具有三个键(x、y、z)的对象指定给
    o
    。它将一个空数组分配给
    a
    ,将数字0分配给
    i

    for(in)
    循环将迭代对象的属性,但首先计算条件

    首先计算
    i++
    ++
    是一个后增量运算符,因人们把该死的东西弄错而臭名昭著。道格拉斯·克罗克福德(搜索他)建议不要使用它。它返回存储在
    i
    中的值(该值为0),然后将其递增

    现在我在存储1,我们在计算[0],它正在访问数组中的一个元素,除了。。。该数组为空(我们正在访问未定义的值)

    现在查看o中的
    ,它遍历
    o
    中的键,共有3个键。因此,它将循环迭代三次。每次它都会将对象记录到控制台


    无论这段代码是什么,我都建议替换它。它不应该是您希望在代码中看到的东西。它让人困惑,肯定没有任何意义。

    一些非常基本的东西适合您的Java!=Javascript。
    var o = {x:1, y:2, z:3};
    var a = []
    var i = 0;
    
    for (propertyName in o)
    {
        a[i] = propertyName;
        i = i + 1;
        console.log(o);
    }