Как задается количество элементов массива
Перейти к содержимому

Как задается количество элементов массива

  • автор:

1. Понятие массива и его свойства

Ранее ты научился работать с единичными переменными в Pascal. Часто возникают ситуации, когда необходимо обработать не \(2\), \(5\), \(6\) переменных в одной программе, а \(100\), \(200\) и т. д. Для этого будем использовать массивы.

Массив — это последовательность однотипных элементов, где каждый элемент имеет свой порядковый номер.

Каждому элементу массива соответствует его индекс (порядковый номер).
Элемент массива — переменная в составе массива.
Разрядность массива — количество элементов в массиве.
Свойства массива
Все элементы массива одного типа — однородность.
Размер массива задаётся один раз и не меняется на протяжении работы программы — постоянство.
Ко всем элементам массива имеется одинаковый доступ — равнодоступность.

Все элементы массива располагаются последовательно в ячейках оперативной памяти — последовательность расположения.

3. Массивы в Pascal

Массив — это множество величин, имеющих одно и то же имя и номер по порядку.

В математике подобное называется последовательностью, можно сказать, что последовательность — это одномерный массив. В математической последовательности каждый следующий элемент записывается по определённому правилу (формуле), в одномерном массиве могут быть произвольные числа (либо символы, либо слова).

Размер массива — это количество элементов в массиве.

Размерность массива определяется количеством входящих в него индексов.

Массивы бывают: одномерные, двумерные, многомерные.

Индекс определяет положение элемента в массиве (нумерация начинается с \(1\)).

Скриншот 18-05-2022 231736.jpg

Рис. \(1\). Индекс и значение массива

Примеры массивов

Количество элементов массива + всех массивов внутри массива

Каким способом можно посчитать количество элементов [1, 2, [3, 4, [5]]], чтобы получилось семь. Другой пример: [[[[[[[[[]]]]]]]]] — должно получиться восемь. Я сегодня провёл примерно три часа, но так ничего и не добился.

function deepCount (a) < let count = 0 count = count + a.length function inside (o) < return o.length >for (i in a) < if (typeof a[i] === 'object') < count = count + inside(a[i]) >> console.log(count) > deepCount([1, 2, [3, 4, [5]]]) 

Вот всё, чего я достиг. Выдаёт шесть, но я не понимаю, как сделать рекурсию функции на саму себя, чтобы бесконечно проверяло, сколько массивов внутри.

Отслеживать
задан 17 сен 2022 в 14:02

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Можно рекурсивно. Проверять является ли элемент массива массивом и если да, то передавать этот элемент аргументом. Если нет увеличивать счетчик.

let m = [1, 2, [3, 4, [5]]]; let count = 0; function recursion(m) < for (const elem of m) < if (Array.isArray(elem)) < count++; recursion(elem); >else < count++ >> return count > console.log(recursion(m))

Отслеживать
ответ дан 17 сен 2022 в 14:19
2,450 2 2 золотых знака 6 6 серебряных знаков 17 17 бронзовых знаков
Функция recursion работает правильно один раз.
17 сен 2022 в 20:12
@StanislavVolodarskiy Затупил) Потому, что надо спать и высыпаться.
18 сен 2022 в 7:06

deepCount устроена так: в счётчик помещается длина массива. Затем перебираются элементы массива. Если какой-то из них тоже массив, к счётчику добавляется результат рекурсивного вызова deepCount :

const deepCount = a => < let c = a.length; for (const v of a) < if (Array.isArray(v)) < c += deepCount(v); >> return c; >; console.log(deepCount([1, 2, [3, 4, [5]]])); console.log(deepCount([[[[[[[[[]]]]]]]]]));

Отслеживать
ответ дан 17 сен 2022 в 20:21
Stanislav Volodarskiy Stanislav Volodarskiy
31.5k 3 3 золотых знака 19 19 серебряных знаков 55 55 бронзовых знаков

  • javascript
  • массивы
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.26.3951

Array.length

Свойство length объекта, который является экземпляром типа Array , устанавливает или возвращает число элементов этого массива. Значение данного свойства 32-битное безнаковое целое число, которое всегда численно больше чем самый наибольший индекс в массиве.

var items = ["shoes", "shirts", "socks", "sweaters"]; items.length; // возвращает 4 

Синтаксис

arr.length

Описание

Свойство length является целым числом с положительным знаком и значением, меньшим чем 2 в степени 32 (232).

var namelistA = new Array(4294967296); //2 в 32 степени = 4294967296 var namelistC = new Array(-100); //отрицательная величина console.log(namelistA.length); //RangeError: Invalid array length console.log(namelistC.length); //RangeError: Invalid array length var namelistB = []; namelistB.length = Math.pow(2, 32) - 1; //устанавливает длину массива меньше 2 в 32 степени console.log(namelistB.length); //4294967295 

В любой момент вы можете установить свойство length для обрезки массива. Когда вы расширяете массив, изменяя его свойство length , реальное количество элементов в массиве увеличивается; например, если вы установите свойство length в 3, когда оно равно 2, массив будет из 3 элементов, где значение третьего элемента будет равно undefined .

var arr = [1, 2, 3]; printEntries(arr); arr.length = 5; // устанавливает длину массива 5. printEntries(arr); function printEntries(arr)  var goNext = true; var entries = arr.entries(); while (goNext)  var result = entries.next(); if (result.done !== true)  console.log(result.value[1]); goNext = true; > else goNext = false; > console.log("=== printed == token punctuation">); > // 1 // 2 // 3 // === printed === // 1 // 2 // 3 // undefined // undefined // === printed === 

Таким образом, свойство length ничего не говорит о количестве определённых значений в массиве. Также смотрите раздел Взаимосвязь свойства length с числовыми свойствами.

Атрибуты свойства Array.length
Записываемое да
Перечисляемое нет
Настраиваемое нет

Примеры

Пример: итерирование по массиву

В следующем примере массив numbers итерируется до значения свойства length , показывающего, сколько элементов содержит массив. Значение каждого элемента удваивается.

var numbers = [1, 2, 3, 4, 5]; for (var i = 0; i  numbers.length; i++)  numbers[i] *= 2; > // Массив numbers теперь равен [2, 4, 6, 8, 10]; 

Пример: сокращение массива

Следующий пример сокращает массив statesUS до длины в 50 элементов, если текущая длина массива больше 50.

if (statesUS.length > 50)  statesUS.length = 50; > 

Спецификации

Specification
ECMAScript Language Specification
# sec-properties-of-array-instances-length

Совместимость с браузерами

BCD tables only load in the browser

Смотрите также

Found a content problem with this page?

  • Edit the page on GitHub.
  • Report the content issue.
  • View the source on GitHub.

This page was last modified on 20 янв. 2024 г. by MDN contributors.

Your blueprint for a better internet.

MDN

Support

  • Product help
  • Report an issue

Our communities

Developers

  • Web Technologies
  • Learn Web Development
  • MDN Plus
  • Hacks Blog
  • Website Privacy Notice
  • Cookies
  • Legal
  • Community Participation Guidelines

Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998– 2024 by individual mozilla.org contributors. Content available under a Creative Commons license.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *