如果我有一个类似...的数组
outerArray = [
middleArray1 = [
innerArray1 = ['data'],
innerArray2 = ['more data']
],
middleArray2 = [
...more stuff...
]
];
如何访问javascript中的内部数组之一?
是outerArray.middleArray1.innerArray1
吗?
答案 0 :(得分:2)
您还没有真正告诉我们您要在这里做什么,但是我怀疑您正在混淆使用{}
并具有outerArray.middleArray1
之类的属性访问权限的对象以及已定义的数组与[]
并通过索引outerArray[0]
访问。
您可以进行排序,因为赋值会返回赋值。这意味着:
middleArray1 = [
innerArray1 = ['data'],
innerArray2 = ['more data']
]
与以下相同:
middleArray1 = [['data'],['more data']]
具有将innerArray1
和innerArray2
定义为全局变量的副作用。例如:
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
所说。
让我们将多维数组分解为多个级别。
middleArray
是Level 1
middleArray -> innerArray1
是Level 2
middleArray -> innerArray1 -> value
是Level 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仅使用通用对象而不是多维数组。