JavaScript

вопрос про массивы

что такое двумерный массив?
что такое ассоциативный массив?
и что такое обычный массив?
(что такое массив я знаю, объяснять не надо)
Вова Михайлов
Вова Михайлов
1 690
Нормальный двумерный массив - это прямоугольная таблица, в ячейки которой записаны значения.

Доступ к элементу двумерного массива производится по комбинации двух индексов: номер строки (строка не в смысле "тестовая строка", а в смысле "ряд таблицы") и номер столбца (именно номер - индекс представляет собой последовательность подряд идущих целых чисел).

Но нормальных массивов в JS нет. Двумерный массив в JS или PHP - это одномерный массив, значениями которого являются одномерные массивы. Потому строки (ряды) в таком массиве могут иметь разную длину, или даже строки могут находиться вперемешку со скалярами. Кроме того, индексы массивов в этих языках могут идти не по порядку.

Ассоциативный массив - это массив, индексами которого являются НЕ целые числа, а строки. В некоторых языках (например, Go) индексами ассоциативных массивов могут быть массивы и структуры.

В JS ассоциативный массив всегда является объектом, а объект - ассоциативным массивом. Эти понятия эквивалентны. К любому элементу объекта можно обратиться как к элементу массива с индексом - названием поля.

В PHP любой массив является ассоциативным. Но есть различия в том, как целочисленные и строковые индексы обрабатываются при объединении массивов (в языке есть, как минимум, шесть разных способов слияния массивов).
AT
Aslan Terlikbaev
55 325
Лучший ответ
let двумерныйМассив = [
  [0, 0, 0, 0],
  [0, 0, 0, 0],
  [0, 0, 0, 0],
  [0, 0, 0, 0],
]

Двумерный, потому что элементы можно достать как по координатам...

arr[2][3] — 3-я строка, 4-й элемент, arr[0][2] — 1-я строка, 3-й элемент.

let ассоциативный = {
  "Ключ1": "Значение",
  "Ключ2": "Значение",
  "Ключ3": "Значение",
}

Но никто не говорит "ассоциативный массив" - в JS это назвают объектом)
Андрей Гавриленко Кроме обычных объектов, есть специальный класс для ассоциативного массива
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Map
Двумерный массив - это массив в котором хранятся ещё массивы, поэтому они называются двумерными. Если ты про JS то там понятия ассоциативного массива нету как в PHP, там их называют объектами или в других ЯП ХЭШ-ТАБЛИЦАМИ, где данные хранятся в виде ключ-значения. Различие между объектами в JS и массивами, в том что в объектах можем хранить данные в виде ключ: значения и порядок их неважен, а массив имеет упорядоченную коллекцию данных пронумерованных индексами. Более подробно про массивы, объекты и их методах можно узнать на сайте learn.javascript.ru или в официальной документации к языку от https://developer.mozilla.org/ru/docs/Web/JavaScript