Структура данных массива, объект массива Javascript и введение в плотные и разреженные массивы.

В этой истории я расскажу о структуре данных массива и некоторых интересных основных фактах об объекте массива Javascript, который отличает их от примитивного массива. структура данных в деталях. Чтобы лучше понять эту историю, вы должны иметь общее представление о массивах в javascript.

Что такое массив?

«Массив - это набор однородных элементов фиксированного размера». Массив - одна из самых простых структур данных и, вероятно, наиболее используемая структура данных. Ниже приведены некоторые особенности массива:

  • Фиксированный размер Массив имеет заранее определенный фиксированный размер.
  • Все элементы имеют одинаковый тип данных.
  • Каждому элементу присваивается индекс от 0 до n-1, где n - количество элементов.
  • Непрерывное распределение памяти Массив выделяется непрерывным блокам памяти.
  • O (1) Сложность времени для вставки и произвольного доступа.
  • O (n) Сложность времени для удаления и поиска.

Что такое объект-массив в Javascript?

Массивы в Javascript - это глобальные объекты в виде списков. Хотя они работают во многом как примитивная структура данных массива, но на самом деле это API, который реализован с использованием хеш-таблицы. Благодаря использованию хеш-таблицы, массивы в javascript являются более мощной структурой.

  • Массивы в javascript имеют динамический размер, независимо от того, определяете вы размер изначально или нет.
let arr = new Array()
let arr = new Array(10);
let arr = [];
  • Массив в javascript может содержать элементы с разными типами данных.
let arr = [1,'hello',true,undefined]
  • Javascript поддерживает как плотные, так и разреженные массивы.

Что такое плотные и разреженные массивы?

Плотные массивы выделяют только непрерывные блоки памяти.

Разреженным массивам необязательно выделять непрерывные блоки памяти.

Почему JavaScript поддерживает разреженные массивы?

Ответ прост: он позволяет массивам быть динамическими по размеру и типам данных. Но самое главное, это улучшает использование памяти.

Как создать разреженный массив в javascript?

Javascript имеет тенденцию автоматически создавать разреженный массив, если это необходимо для более эффективного использования памяти. И javascript делает это чаще, чем вы даже замечаете. Рассмотрим следующий пример:

let arr = [1,2,3];
arr[50] = 50;

Мы определили массив ‘arr’ с элементами 1,2,3. Javascript выделяет непрерывную память для ‘arr’ после прочтения первого оператора. Затем javascript читает второй оператор и выделяет память для этого элемента в памяти. Но вот в чем дело: он не будет выделять память для индекса 3 по индексу 49. Вместо этого он просто выделяет память для индекса 50. См. Блок-схему ниже:

К этому времени необходимо ответить на два очень важных вопроса.

Какое значение имеет индекс с 3 по 49?

console.log(arr[3],arr[4],arr[49])  
// output : undefined undefined undefined
console.log(arr.filter( a => a === undefined)
// output : []

Если вы попытаетесь проверить значение любого индекса от 3 до 49 массива ‘arr’, все они будут ‘undefined’. Но если вы отфильтруете массив, чтобы он содержал только значения ‘undefined’, то результатом будет пустой массив. Потому что на самом деле javascript никогда не выделял память для индексов от 3 до 49, поскольку они никогда не объявлялись.

Какова длина массива arr?

Хотя индексы с 3 по 49 пусты и есть только 4 индекса со значениями. Тем не менее, длина массива будет 51. Потому что именно так javascript управляет согласованными индексами, делая дыры для необъявленных индексов.

console.log(arr.length)
// output : 51

Объекты-массивы в javascript - это удивительные структуры. Но если вы хотите создать примитивную структуру данных массива в javascript, вы можете сделать это, используя типизированные массивы в javascript. Попробуйте это и дайте мне знать в разделе ответов, если найдете что-то классное.