Javascript 在二维数组中调用对象

Javascript 在二维数组中调用对象,javascript,arrays,Javascript,Arrays,如果我有一个像 outerArray = [ middleArray1 = [ innerArray1 = ['data'], innerArray2 = ['more data'] ], middleArray2 = [ ...more stuff... ] ]; 如何访问javascript中的一个内部数组 是不是outerArray.middleArray1.innerArray1?首先,这是一种非常奇怪的

如果我有一个像

outerArray = [
    middleArray1 = [
        innerArray1 = ['data'],
        innerArray2 = ['more data']
    ],
    middleArray2 = [
         ...more stuff...
    ]
];
如何访问javascript中的一个内部数组


是不是
outerArray.middleArray1.innerArray1

首先,这是一种非常奇怪的创建嵌套数组的方法,因为您可能无法访问数组名为
'middleArray1'
的数组元素,我尝试过了,但没有效果。毕竟,数组将仅以这种格式提供

outerArray = [
    [
        ['data'],
        ['more data']
    ],
    [
         ...more stuff...
    ]
];
您仍然可以作为
outerArray[0][0]
(innerArray1)或

outerArray[0][0][0]
(innerArray1的第一个元素)

继续说下去

让我们将多维数组分解为多个级别

  • middleArray
    1级
  • middleArray->innerArray1
    2级
  • middleArray->innerArray1->value
    3级
  • 例如,要访问
    数据
    ,您将有3个级别,表示3个
    []
    括号

    例如:
    var data=outerArray[0][0][0]
    将输出
    数据

    var moreData=outArray[0][0][1]
    将输出
    更多数据


    outerArray[0]
    访问
    level1
    上的第一个数组,即
    middleArray1

    outerArray[1]
    访问
    level1
    上的第二个数组,即
    middleArray2

    outerArray[0][0]
    访问
    级别2
    上的第一个数组,即
    内部数组1

    等等。

    仔细阅读,你的声明有点奇怪,正如TiiJ7所指出的。通常情况下,数组的数组更像这样:

    const outerArray = [
        [
            [data],
            [moredata]
        ],
        [
            // more stuff
        ]
    ]
    
    您可以通过索引调用每个项目,如outerArray[0][0][0]

    看起来你真正想要的是一个物体

    const dataObj = {
        middleObj1: {
            innerObj1: [data],
            innerObj2: [moredata]
        },
        middleObj2: {
            // more stuff
        }
    }
    
    这个函数可以通过键来调用,而不仅仅是索引。也就是说,您可以选择使用dataObj['middleObj1']['innerObj1'][0]或dataObj.middleObj1.innerObj1[0]


    注意,在这两种情况下,我仍然以索引结束它。这是因为我在示例中保留了最里面的数组。可以在对象中嵌套数组。事实上,数组是JavaScript中一种特殊类型的对象。JavaScript只是使用通用对象而不是多维数组。

    您还没有真正告诉我们您在这里要做什么,但我怀疑您混淆了对象,这些对象使用
    {}
    并具有属性访问权限,如
    outerArray.middleArray1
    ,以及使用
    []定义的数组
    并通过索引访问:
    outeraray[0]

    您可以选择这种工作方式,因为工作分配返回指定的值。这意味着:

    middleArray1 = [
        innerArray1 = ['data'],
        innerArray2 = ['more data']
    ]
    
    同:

    middleArray1 = [['data'],['more data']]
    
    副作用是
    innerarary1
    innerary2
    被定义为全局变量。例如:

    outerArray=[
    中间阵列1=[
    innerArray1=[“数据”],
    innerArray2=['更多数据']
    ],
    middleArray2=[
    “……更多的东西……”
    ]
    ];
    //日志全局变量innerArray1(可能不是您想要的)
    console.log(innerArray1)
    //访问第i个索引:
    
    log(outerArray[0][0])
    在您的例子中,它实际上只是
    inneraray1
    。但这是因为你的定义很奇怪(你在数组定义中赋值)。你的“东西”实际上是一个3D数组,如果它是一个的话,因为它看起来更像是一个对象。在你的例子中,你可以在你的“中间数组”中用索引访问它,比如outerArray[0]。。。。outerArray[N-1],但您的语法是。。。奇怪的是你是这样定义数据的?如果是这样,你应该认真地重新考虑。如果您试图用这种格式简单地描述数组结构,请看一看如何创建数组并用实际代码编辑问题。这将更有可能为您的问题提供一个有用的答案。您应该去掉数组中的命名/赋值部分(
    middleArray1=…
    ),因为它将以索引结束。谢谢,这正是我需要的!是的,我像你说的那样把东西混在一起了。