Javascript将包含子对象的对象转换为数组

Javascript将包含子对象的对象转换为数组,javascript,jquery,Javascript,Jquery,我有一个对象,其中包含子对象作为子对象。 我需要将其转换为数组: var myObj = { a: 5, b: 6, c: { a: { a: { a: 7 } } }, d: { a: { a: 8, b: 9, c: { a

我有一个对象,其中包含子对象作为子对象。 我需要将其转换为数组:

var myObj = {
    a: 5,
    b: 6,
    c: {
        a: {
            a: {
                a: 7
            }
        }
    },
    d: {
        a: {
            a: 8,
            b: 9,
            c: {
                a: 10
            }
        },
        b: 11
    }
}
像这样:

myArray = [
    a: 5,
    b: 6,
    c: [
      a: [
        a: [
          a: 7
        ]
      ]
    ],
    d: [
      a: [
        a: 8,
        b: 9,
        c: [
          a: 10
        ]
      ],
      b: 11
    ]
  ];

实现这一点的最佳方法是什么?

正如您在评论中提到的,您似乎有XY问题。你想要X,但向我们要Y,而不是认为它会帮助你,但事实上Y比X更难解

有两种方法可以访问JavaScript中对象的属性:

  • obj.prop
  • obj['prop']
这两种访问方式的区别在于,第二种更通用,您可以使用一些受限关键字作为属性名,您可以使用变量访问值,等等

要访问嵌套属性,可以执行以下操作(任何选项都可以):

  • myObj.c.a.a.a
  • myObj['c']['a']['a']['a']
您甚至可以将它们混合使用:
myObj.c['a'].a['a']
,尽管它可能更容易混淆,所以您应该避免使用它


JS中的数组也是对象,它们还有一些处理带有数字名称的属性的功能。您似乎不需要任何这些功能,因此可能不需要阵列。

如您在评论中所述,您似乎有XY问题。你想要X,但向我们要Y,而不是认为它会帮助你,但事实上Y比X更难解

有两种方法可以访问JavaScript中对象的属性:

  • obj.prop
  • obj['prop']
这两种访问方式的区别在于,第二种更通用,您可以使用一些受限关键字作为属性名,您可以使用变量访问值,等等

要访问嵌套属性,可以执行以下操作(任何选项都可以):

  • myObj.c.a.a.a
  • myObj['c']['a']['a']['a']
您甚至可以将它们混合使用:
myObj.c['a'].a['a']
,尽管它可能更容易混淆,所以您应该避免使用它


JS中的数组也是对象,它们还有一些处理带有数字名称的属性的功能。您似乎不需要这些功能,因此可能不需要数组。

虽然数组可以有属性(毕竟它们是对象),但为什么要这样做?如果您确实想这样做,提示:递归数组可能只有数字键;您想要的“数组”在JavaScription中是不可能的,为什么需要它?听起来像是一个典型的XY问题,因为我需要一个数组对象来调用它,就像
myArray[c][a][a][a][a][a]
@zur4ik”一样,因为我需要一个数组对象来调用它,就像myArray[c][a][a][a][a]“不,你不需要;方括号表示法也可用于访问对象的属性。但是,您需要将它们作为字符串传递(而不是尝试将它们用作变量的值),因此:
myObj[“c”][“a”][“a”][“a”][“a”]
虽然数组可以有属性(毕竟它们是对象),为什么要这样做?如果您确实想这样做,提示:递归数组可能只有数字键;您想要的“数组”在JavaScription中是不可能的,为什么需要它?听起来像是一个典型的XY问题,因为我需要一个数组对象来调用它,就像
myArray[c][a][a][a][a][a]
@zur4ik”一样,因为我需要一个数组对象来调用它,就像myArray[c][a][a][a][a]“不,你不需要;方括号表示法也可用于访问对象的属性。但是,您需要将它们作为字符串传递(而不是尝试将它们用作变量的值),因此:
myObj[“c”][“a”][“a”][“a”]