Если у меня есть массив вроде ...
outerArray = [
middleArray1 = [
innerArray1 = ['data'],
innerArray2 = ['more data']
],
middleArray2 = [
...more stuff...
]
];
Как я могу получить доступ к одному из внутренних массивов в javascript?
Это outerArray.middleArray1.innerArray1?
Ваша "вещь" на самом деле является трехмерным массивом, если он хотя бы один, потому что он больше похож на объект
в вашем примере вы можете получить доступ к своему «среднему массиву» с помощью индекса, например outerArray [0] .... outerArray [N-1], но ваш синтаксис ... на самом деле странный
Вы не можете получить доступ к массивам по свойствам. Для доступа к данным используйте скобки []. Сделайте console.info(outerArray); и посмотрите индексы каждого уровня.
Это действительно то, как вы определили свои данные? Если это так, вам следует серьезно пересмотреть свое мнение. Если вместо этого вы пытаетесь просто описать структуру массива в этом формате, посмотрите, как создать Минимальный, полный и проверяемый пример и отредактировать вопрос с помощью реального кода. Это с большей вероятностью даст полезный ответ на ваш вопрос.
В значительной степени вам следует просто избавиться от части именования / назначения в массиве (ах) (middleArray1 = ...), так как в любом случае он просто закончится индексами.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Прежде всего, это очень странный способ создания вложенных массивов, поскольку вы не сможете получить доступ к элементам массива с такими именами, как 'middleArray1', я пробовал это, но он не работает. Ведь массив будет доступен только в этом формате ...
outerArray = [
[
['data'],
['more data']
],
[
...more stuff...
]
];
Вы все еще можете получить доступ к внутренним элементам как outerArray[0][0] (innerArray1) или также
outerArray[0][0][0] (1-й элемент innerArray1)
Продолжая то, что сказал deadman.
Давайте разберем ваш многомерный массив на уровни.
middleArray - это Level 1middleArray -> innerArray1 - это Level 2middleArray -> innerArray1 -> value - это Level 3Например, для доступа к data у вас будет 3 уровня, что означает 3 скобки [].
Пример:
var data = outerArray[0][0][0] will output 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Ваше заявление немного странно, как отметил 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, и массивы, которые определены с помощью [] и доступны по индексу: 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.info(innerArray1)
// access ith index:
console.info(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.info(outerArray.middleArray1.innerArray1)Конечно, вы, вероятно, захотите использовать лучшее соглашение об именах для своих свойств ...
Спасибо, это именно то, что мне нужно! Да, я смешивал предметы, как ты сказал.
В вашем случае на самом деле это просто
innerArray1. Но это потому, что ваше определение странное (вы назначаете внутри своего определения массива).