Перейти к содержимому

Как проверить пустой ли массив c

  • автор:

Как проверить пустой ли массив в Javascript.

В Javascript очень часто приходиться работать с массивами. Одна из проверок, с которой приходится часто встречаться – это проверка на то пустой ли массив или в нем есть какие-то элементы.

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

Другое дело, когда массив формируется автоматически при выполнении каких-либо условий. Например, вы получаете данные из базы данных и нужно проверить нашлось ли что-либо при таких условиях, либо таких записей в базе данных нет.

Если ничего найдено не было, то будет возвращаться пустой массив. Эту ситуацию нужно отследить и делать соответствующие действия.

Давайте посмотрим на упрощенном примере, как это работает.

Итак, предположим, что у нас есть два массива с данными:

var dataFull = [3,5,7]; var dataEmpty = [];

dataFull – это массив, который содержит в себе элементы

dataEmpty – это пустой массив.

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

Для проверки на то есть-ли какие-либо элементы в массиве, можно использовать свойство length.

data.length

Возвращаясь к задаче, которую мы поставили, решение может выглядеть вот так:

var dataFull = [3,5,7]; var dataEmpty = []; if (dataFull.length == 0) else if (dataEmpty.length == 0) else

Чтобы посмотреть, как это работает, можете перейти по следующей ссылке:

На этом все. Надеюсь, что в будущем с подобными проверками у вас больше возникать трудностей не будет.

Все мои уроки по Javascript здесь.

Чтобы оставить сообщение, зарегистрируйтесь/войдите на сайт через:

Как проверить массив на пустоту?

Оказалось это не работает.
С ARRAY[0]= работает. Но стоит пявиться ARRAY[1]= и всё.

Как же проверить за один раз, пустой ли массив?
Столько скриптов переписано, а этого не знаю, вернее, был уверен, что знаю, а оказалось вон оно как.
Должно же быть какое-то элементарное решение.

teod0r ★★★★★
02.09.21 20:51:00 MSK

[ $ -eq 0 ] 

$ — возвращает длину массива

anonymous
( 02.09.21 21:16:24 MSK )

еще $ преобразует массив в строку, тогда возможно -z сработает.

anonymous
( 02.09.21 21:18:34 MSK )
Ответ на: комментарий от anonymous 02.09.21 21:16:24 MSK

Мне не количество элементов узнать нужно, а проверить, что все элементы пустые, т.е. что они ARRAY[0]= ARRAY[1]= ARRAY[2]= . , а не ARRAY[0]=iuy4tv8q ARRAY[1]=’ ‘ ARRAY[2]=1

teod0r ★★★★★
( 02.09.21 21:20:29 MSK ) автор топика
Ответ на: комментарий от anonymous 02.09.21 21:18:34 MSK

тоже не работает

teod0r ★★★★★
( 02.09.21 21:20:54 MSK ) автор топика
Ответ на: комментарий от teod0r 02.09.21 21:20:29 MSK

IFS='' -z "$" 

Только IFS нужно сохранять/восстанавливать или sub-shell.

А вобще, пустой массив и массив из пустых элементов это разные вещи.

mky ★★★★★
( 02.09.21 21:31:31 MSK )
Ответ на: комментарий от teod0r 02.09.21 21:20:54 MSK

Я поигрался, вроде работает:

IFS=»; ARRAY[0]= ARRAY[1]=aaa ARRAY[2]=»; echo «$»; echo; [ -z «$» ]; echo $?

anonymous
( 02.09.21 21:44:00 MSK )
Ответ на: комментарий от mky 02.09.21 21:31:31 MSK

работает, но какое-то не очевидное решение

teod0r ★★★★★
( 02.09.21 21:53:44 MSK ) автор топика
Ответ на: комментарий от teod0r 02.09.21 21:53:44 MSK

Это чисто теоретический вопрос или практический?

Если практический, и если откуда-то сверху нет требования делать именно шелл-скриптами, рекомендую посмотреть в сторону чего-то более развитого, хотя бы питон/пхп, ибо шелл-скрипт с такой логикой ты даже если и напишешь то будет сложноподдерживаемым.

firkax ★★★★★
( 02.09.21 22:15:37 MSK )

Столько скриптов переписано, а этого не знаю, вернее, был уверен, что знаю, а оказалось вон оно как.

Это и есть главная проблема помойки под названием bash (и другие shеллов тоже касается по большей части). На этом невозможно нормально программировать, нет нормального синтаксиса, куча edge кейсов, старое легаси, да и язык построен так, чтобы интерпретатору было удобно, а не человеку

Использовать какие-то структуры данных на баше это боль, и как только они появляются в коде, проще сразу все переписать все на питон. Единственный плюс баша это возможность быстро строить пайплайны и вызывать экзешники, без всякой сторонней мишуры как в том же пайтоне.

Не, можно конечно постичь все тонкости, знать все подводные камни, но один вопрос: зачем на это тратить свое время?

Fizzika ★★
( 02.09.21 22:35:36 MSK )
Ответ на: комментарий от Fizzika 02.09.21 22:35:36 MSK

Использовать какие-то структуры данных на баше это боль, и как только они появляются в коде, проще сразу все переписать все на питон. Единственный плюс баша это возможность быстро строить пайплайны и вызывать экзешники, без всякой сторонней мишуры как в том же пайтоне.

И тут врывается xonsh:

def func(): a = sys.argv[1] git clone @(a) 

Проверить массив или первый элемент массива на пустоту?

Есть массив
int arr[10];
При вызове функции мне нужно сначала проверить, заносил ли туда пользователь значения через cin или нет.
Т.е проверить есть ли в массиве значения. Или он пустой.Как это сделать?
Сейчас при выводе цикла это показывает -858993460.

  • Вопрос задан более трёх лет назад
  • 4868 просмотров

Комментировать
Решения вопроса 2

15432

Системный программист ^_^

Во-первых, нужно сначала задать массиву начальные значения. Например, забить нулями вот так:
int arr[10] = ;

Во-вторых, лучше завести отдельную переменную-флаг, в которой отмечать факт изменения массива пользователем.

Классы С++ (массив с проверкой на пустоту)

добрый день! Прошу помощи. ТребуетсЯ создать массив, с определенным количеством элементов. Слева в массив входят элементы, справа выходят. Реализовать проверку на пустоту.

Элементы вводятся с клавиатуры. При попытке извлечения пустого элемента, вывести сообщение об ошибке, но продолжить выполнение программы.

Я знаю что элементы можно добавлять и извлекать. Так же знаю что нужно количество элементов.

4 ответа

26 мая 2011 года
889 / / 29.05.2009
Слева в массив входят элементы, справа выходят.

а где у массивов лево и параво?

Помогите реализовать.

что уже есть? с какими трудностями столкнулся?

27 мая 2011 года
889 / / 29.05.2009

class array
char arr[100];
int max, current;
int is_empty();
public:
array()
array(int size);
~array()<>;
int add(char sym);
char get();
>;

array::array(int size)
if (size>100 || size <=0) max=100;
else max=size;
current=0;
>

int array::is_empty()
if (current==0) return 1;
else return 0;
>
int array::add(char sym)
if (current==max)
cout return 1;
>
else
arr[current]=sym;
current++;
return 0;
>
>

27 мая 2011 года
1.7K / / 26.01.2011
Массив типа «очередь» (FIFO)

template < class T >class myqueue
<
private :
struct record
<
record ( T & element ) : val ( element ) < next = NULL ; >;
record ( ) < next = NULL ; >;
T val ;
record * next ;
> ;
record * first ;
record * last ;
public :
myqueue ( )
<
first = NULL ;
last = NULL ;
> ;
bool isEmpty ( ) //проверка на пустоту
<
return ! first ;
> ;
void push ( T element ) //добавление в конец списка
<
record * newelement = new record ( element ) ;
if ( ! last )
<
first = newelement ;
last = newelement ;
>
else
<
last — > next = newelement ;
last = newelement ;
>
> ;
T pop ( ) //выборка из начала списка
<
T ret = T ( ) ;
if ( first )
<
ret = first — > val ;
record * newfirst = first — > next ;
delete first ;
first = newfirst ;
>
return ret ;
> ;
> ;

Как проверить пустой ли массив java

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

int[] arr = new int[i]; if (arr.length == 0)  System.out.println("Массив пуст"); > else  System.out.println("Массив не пуст"); > 

В данном примере создается пустой массив и проверяется его длина. Если длина равна нулю, то выводится сообщение «Массив пуст».

Как проверить массив на пустоту?

Оказалось это не работает.
С ARRAY[0]= работает. Но стоит пявиться ARRAY[1]= и всё.

Как же проверить за один раз, пустой ли массив?
Столько скриптов переписано, а этого не знаю, вернее, был уверен, что знаю, а оказалось вон оно как.
Должно же быть какое-то элементарное решение.

teod0r ★★★★★
02.09.21 20:51:00 MSK

[ $ -eq 0 ] 

$ — возвращает длину массива

anonymous
( 02.09.21 21:16:24 MSK )

еще $ преобразует массив в строку, тогда возможно -z сработает.

anonymous
( 02.09.21 21:18:34 MSK )
Ответ на: комментарий от anonymous 02.09.21 21:16:24 MSK

Мне не количество элементов узнать нужно, а проверить, что все элементы пустые, т.е. что они ARRAY[0]= ARRAY[1]= ARRAY[2]= . , а не ARRAY[0]=iuy4tv8q ARRAY[1]=’ ‘ ARRAY[2]=1

teod0r ★★★★★
( 02.09.21 21:20:29 MSK ) автор топика
Ответ на: комментарий от anonymous 02.09.21 21:18:34 MSK

тоже не работает

teod0r ★★★★★
( 02.09.21 21:20:54 MSK ) автор топика
Ответ на: комментарий от teod0r 02.09.21 21:20:29 MSK

IFS='' -z "$" 

Только IFS нужно сохранять/восстанавливать или sub-shell.

А вобще, пустой массив и массив из пустых элементов это разные вещи.

mky ★★★★★
( 02.09.21 21:31:31 MSK )
Ответ на: комментарий от teod0r 02.09.21 21:20:54 MSK

Я поигрался, вроде работает:

IFS=»; ARRAY[0]= ARRAY[1]=aaa ARRAY[2]=»; echo «$»; echo; [ -z «$» ]; echo $?

anonymous
( 02.09.21 21:44:00 MSK )
Ответ на: комментарий от mky 02.09.21 21:31:31 MSK

работает, но какое-то не очевидное решение

teod0r ★★★★★
( 02.09.21 21:53:44 MSK ) автор топика
Ответ на: комментарий от teod0r 02.09.21 21:53:44 MSK

Это чисто теоретический вопрос или практический?

Если практический, и если откуда-то сверху нет требования делать именно шелл-скриптами, рекомендую посмотреть в сторону чего-то более развитого, хотя бы питон/пхп, ибо шелл-скрипт с такой логикой ты даже если и напишешь то будет сложноподдерживаемым.

firkax ★★★★★
( 02.09.21 22:15:37 MSK )

Столько скриптов переписано, а этого не знаю, вернее, был уверен, что знаю, а оказалось вон оно как.

Это и есть главная проблема помойки под названием bash (и другие shеллов тоже касается по большей части). На этом невозможно нормально программировать, нет нормального синтаксиса, куча edge кейсов, старое легаси, да и язык построен так, чтобы интерпретатору было удобно, а не человеку

Использовать какие-то структуры данных на баше это боль, и как только они появляются в коде, проще сразу все переписать все на питон. Единственный плюс баша это возможность быстро строить пайплайны и вызывать экзешники, без всякой сторонней мишуры как в том же пайтоне.

Не, можно конечно постичь все тонкости, знать все подводные камни, но один вопрос: зачем на это тратить свое время?

Fizzika ★★
( 02.09.21 22:35:36 MSK )
Ответ на: комментарий от Fizzika 02.09.21 22:35:36 MSK

Использовать какие-то структуры данных на баше это боль, и как только они появляются в коде, проще сразу все переписать все на питон. Единственный плюс баша это возможность быстро строить пайплайны и вызывать экзешники, без всякой сторонней мишуры как в том же пайтоне.

И тут врывается xonsh:

def func(): a = sys.argv[1] git clone @(a) 

isempty

TF = isempty( A ) возвращает логический 1 TRUE ) если A пустой, и логический 0 ложь ) в противном случае. Пустой массив, таблица или расписание имеют по крайней мере одну размерность с длиной 0, такой как 0 на 0 или 0 5.

Примеры

Пустой многомерный массив

Создайте трехмерный массив с одной равной нулю длиной размерности, и определите, пусто ли это.

A = zeros(0,2,2); TF = isempty(A)
TF = logical 1

Пустые массивы и отсутствующие значения

Сравните пустые массивы с массивами, содержащими отсутствующие значения.

В MATLAB® пустой массив имеет по крайней мере одну равную нулю длину размерности. Массив, содержащий отсутствующие значения, такие как NaN или , не обязательно пусто.

Создайте категориальный вектор с отсутствующими значениями.

cat1 = categorical([missing missing])

cat1 = 1×2 categorical

Начиная с cat1 не имеет размерности нуля длины, это не пусто.

TF1 = isempty(cat1)
TF1 = logical 0

Создайте категориальный массив 0 на 0 и тест, если это пусто.

cat2 = categorical([]); TF2 = isempty(cat2)
TF2 = logical 1

Массивы пустой строки

Сравните массивы пустой строки и строки без символов.

Создайте вектор строки, элементами которого являются строки без символов. str1 непусто, поскольку ни одна из его размерностей не имеет нуль длины.

str1 = strings(1,3)
str1 = 1x3 string "" "" ""
TF1 = isempty(str1)
TF1 = logical 0

Создайте 0 3 массив строк и тест, если это пусто.

str2 = strings(0,3); TF2 = isempty(str2)
TF2 = logical 1

Входные параметры

A — Входной массив
скаляр | вектор | матрица | многомерный массив | таблица | расписание

Входной массив или таблица в виде скаляра, вектора, матрицы, многомерного массива, таблицы или расписания.

Советы

  • Чтобы определить, имеет ли массив строк пустые строки (строковые элементы с нулевыми символами), используйте == оператор. Например, если str нуль строки, содержащей символы, затем str == «» возвращает логический 1 TRUE ). Для получения дополнительной информации о тестировании пустых строк см. Тест на пустые строки и отсутствующие значения. Для получения информации о сравнении строк смотрите, Сравнивают текст.
  • Чтобы протестировать на отсутствующие значения в массиве, используйте ismissing функция.

Расширенные возможности

«Высокие» массивы
Осуществление вычислений с массивами, которые содержат больше строк, чем помещается в памяти.

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Генерация HDL-кода
Сгенерируйте Verilog и код VHDL для FPGA и проекты ASIC с помощью HDL Coder™.

Основанная на потоке среда
Запустите код в фоновом режиме с помощью MATLAB® backgroundPool или ускорьте код с Parallel Computing Toolbox™ ThreadPool .

Эта функция полностью поддерживает основанные на потоке среды. Для получения дополнительной информации смотрите функции MATLAB Запуска в Основанной на потоке Среде.

Массивы графического процессора
Ускорьте код путем работы графического процессора (GPU) с помощью Parallel Computing Toolbox™.

Эта функция полностью поддерживает массивы графического процессора. Для получения дополнительной информации смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox) .

Распределенные массивы
Большие массивы раздела через объединенную память о вашем кластере с помощью Parallel Computing Toolbox™.

Эта функция полностью поддерживает распределенные массивы. Для получения дополнительной информации смотрите функции MATLAB Запуска с Распределенными Массивами (Parallel Computing Toolbox) .

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

Представлено до R2006a

Открытый пример

У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?

Документация MATLAB

Поддержка

  • MATLAB Answers
  • Помощь в установке
  • Отчеты об ошибках
  • Требования к продукту
  • Загрузка программного обеспечения

© 1994-2021 The MathWorks, Inc.

  • Условия использования
  • Патенты
  • Торговые марки
  • Список благодарностей

Для просмотра документации необходимо авторизоваться на сайте
Войти
Памятка переводчика

1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.

2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.

3. Сохраняйте структуру оригинального текста — например, не разбивайте одно предложение на два.

4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.

5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.

Как проверить пустой ли массив?

Массивы в чистом Си не могут быть «пустыми», поскольку память под них выделяется в соответствии с размерностью таковых.

Илья, Вы сначала определитесь сами, что именно для вас будет «пустым» массивом.

Стандартные статические и динамические массивы, как написал выше poige не могут быть пустыми. Они всегда имеют размер >0. И да же если вы не инициализируете элементы массива, в них все равно будут какие-то значения (мусор).

Стандартный подход — если длина массива 0, значит массив пустой.

Вы можете, например, в программе считать, что значение 0 — это отсутствие элемента и в коде проверять это. Тогда проверка на «пустоту» массива своидтся просто к проверке всех значений на равенство 0. Если хоть один элемент не 0 — массив не пустой. Значение 0 я взял произвольно, вы можете брать любое другое, в зависимости от типа данных хранящегося в массиве. Или еще хуже — сделать массив структур, одно поле структуры отводите под признак — пустая структура или нет.

Решения вопроса 2
AnT @TheCalligrapher

В языке С в принципе не бывает «пустых» массивов. Разве что динамически выделенная под массив память может иметь размер 0 или flexible array member в структуре может соответствовать массиву размера 0.

Поэтому не ясно, о чем вы вообще ведете речь.

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

Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
Не ИТ-специалист

//. i = 0; tmp = 0; while (i < len) < if (tab[i] >tmp) tmp = tab[i]; i++; > //. 

(Массив пустой, если его длина len равна 0.)
Ответ написан более трёх лет назад
Pinkman @famousman204 Автор вопроса
нет, допустим я отправлю вот такой массив

int arr[10]; max(arr, 10);

то в таком случае я должен получить 0. Но не понимаю как это сделать.
Илья, это не пустой массив, а не инициализированный.

Илья, в Си невозможно отличить не инициализированную переменную от инициализированной (по крайней мере, типа int), — какой нибудь мусор в ней будет находится, — это не скриптовый язык, в котором как в JavaScript, есть особое значение особого типа undefined . Поэтому, если вам надо, явно инициализируйте массивы нулями.

Ответы на вопрос 0
Ваш ответ на вопрос

Войдите, чтобы написать ответ

android

  • Android
  • +3 ещё

Какие есть доки по сборке APK/AAB с использованием Android NDK?

  • 1 подписчик
  • 30 дек. 2023
  • 65 просмотров

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

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