调用二维数组中的对象

时间:2018-06-22 14:44:38

标签: javascript arrays

如果我有一个类似...的数组

outerArray = [
    middleArray1 = [
        innerArray1 = ['data'],
        innerArray2 = ['more data']
    ],
    middleArray2 = [
         ...more stuff...
    ]
];

如何访问javascript中的内部数组之一?

outerArray.middleArray1.innerArray1吗?

4 个答案:

答案 0 :(得分:2)

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

您可以进行排序,因为赋值会返回赋值。这意味着:

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

与以下相同:

middleArray1 = [['data'],['more data']]

具有将innerArray1innerArray2定义为全局变量的副作用。例如:

outerArray = [
    middleArray1 = [
        innerArray1 = ['data'],
        innerArray2 = ['more data']
    ],
    middleArray2 = [
        ' ...more stuff...'
    ]
];

// log global variable innerArray1 (probably not what you want)
console.log(innerArray1)

// access ith index:
console.log(outerArray[0][0])

这几乎肯定不是您想要的。如果要使用outerArray.middleArray1之类的属性访问数据,则需要定义一个对象。例如:

// use {} to define object literal
outerArray = {
        middleArray1: {
            innerArray1: 'data',
            innerArray2: 'more data',
        },
        middleArray2: ' ...more stuff...'
 };
 
 // now access by property name
 console.log(outerArray.middleArray1.innerArray1)

当然,您可能希望对属性使用更好的命名约定...

答案 1 :(得分:1)

首先,这是创建嵌套数组的非常奇怪的方法,因为您可能无法访问具有'middleArray1'之类的数组名称的数组元素,我尝试了一下,但是它不起作用。毕竟,阵列只能以这种格式使用...

outerArray = [
    [
        ['data'],
        ['more data']
    ],
    [
         ...more stuff...
    ]
];

您仍然可以以outerArray[0][0](innerArray1)或

的形式访问内部元素。

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

答案 2 :(得分:1)

继续deadman所说。

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

  1. middleArrayLevel 1
  2. middleArray -> innerArray1Level 2
  3. middleArray -> innerArray1 -> valueLevel 3

例如,要访问data,您将具有3个级别,表示3个[]括号。

示例:


var data = outerArray[0][0][0]将输出data

var moreData = outArray[0][0][1]将输出more data


outerArray[0]访问Level 1上的第一个数组middleArray1

outerArray[1]访问Level 1上的第二个数组middleArray2

outerArray[0][0]访问Level 2上的第一个数组innerArray1

,依此类推。


阅读Creating a Multidimensional Array

答案 3 :(得分:1)

TiiJ7指出您的声明有些奇怪。通常,数组的数组看起来像这样:

const outerArray = [
    [
        [data],
        [moredata]
    ],
    [
        // more stuff
    ]
]

您将通过其索引调用每个项目,例如externalArray [0] [0] [0]

看起来您真正想要的是一个对象。

const dataObj = {
    middleObj1: {
        innerObj1: [data],
        innerObj2: [moredata]
    },
    middleObj2: {
        // more stuff
    }
}

可以通过键而不是单独的索引来调用该键。也就是说,您可以选择使用dataObj ['middleObj1'] ['innerObj1'] [0]或dataObj.middleObj1.innerObj1 [0]

请注意在两种情况下我如何仍以索引结尾。那是因为我在示例中保留了最里面的数组。您可以在对象内嵌套数组。实际上,数组是JavaScript中的一种特殊对象。 JavaScript仅使用通用对象而不是多维数组。