с помощью какой функции можно проверить является ли переменная массивом

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

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

У нас есть две переменные ( massiv и chtoto ):

Как узнать, является ли переменная массивом? Мы хотим получить логическое значение проверки переменной на массив — true или false.

Видео

Как проверить именованные данные?

Консольные выводы в браузере — передаём переменные в качестве аргумента:

с помощью какой функции можно проверить является ли переменная массивомJavaScript — Как проверить переменную на массив?

Как узнать, является ли выражение массивом?

Как проверить не именованные данные?

В качестве аргумента функции isArray() прописываем «проверяемые» данные.

Консольные выводы в браузере — передаём массив и объект в качестве аргумента:

с помощью какой функции можно проверить является ли переменная массивомJavaScript — Как проверить массив на массив? — Всегда получим истину true с помощью какой функции можно проверить является ли переменная массивомJavaScript — Как проверить объект на массив? — Всегда получим ложь false

Альтернативный способ

Мы можем воспользоваться свойством конструктора объекта и получить его имя класса. Если это имя будет равно « Array «, значит мы имеем дело с классическим массивом JavaScript, а не массиво-подобным объектом.

с помощью какой функции можно проверить является ли переменная массивомПроверяем на массив свойством constructor и name — JavaScript

Зачем нужно проверять на массив?

Задача проверки на массив часто встречается в сложных структурах данных, когда нужно погружаться на много уровней в глубину основного массива, чтобы извлекать необходимые данные. Выглядит примерно как рекурсивная распаковка данных — сначала достаём что на уровень ниже, потом то, что ещё на один уровень ниже …и так далее. Вот хороший пример, где нужно проверять на массив: Как узнать глубину каждого элемента массива?

Это очень похоже на то, когда вы приходите из магазина с пакетом еды. Вы точно знаете, что где-то внутри в большом пакете есть средний пакет с фруктами, в который вложен ещё один маленький пакет с яблоками. Так вот если вы хотите получить яблоко, то вы должны погрузиться в самый «глубоко-лежащий» пакет. Вы должны из большого пакета сначала достать средний, а потом из среднего достать маленький. И только потом достать яблоко.

Источник

Проверка на массив, на наличие элементов и на пустоту в PHP

с помощью какой функции можно проверить является ли переменная массивом

В этой статье будем делать различные проверки массива. В том числе проверим является ли переменная массивом, а так же проверим есть ли у ключей массива пустые значения. Будем двигаться от простого к более сложному. И первое, что можно сделать, это проверить на массив. Для этого нам помоет встроенная в язык PHP функция is_array. Разберем небольшой пример.

$arr = [‘id’, ‘name’, ’email’]; // Массив элементов if(is_array($arr))< echo 'Это массив'; >else

Функция вернет true, если это массив и false — если не массив. Это простой пример и сложностей возникнуть не должно. Перейдем к следующему примеру.

Проверка массива на пустоту и пустые элементы в PHP

Функция empty сработает только в том случае, когда в массиве нет вообще никаких элементов. Поэтому ее лучше не использовать при проверке массивов. В этом случае нам поможет еще одна функция — array_diff. С ее помощью мы сравним исходный массив с другим массивом и в случае расхождения выведем элементы массива, которые не совпадают. Может быть немного сумбурно и не понятно, но давайте разберем на примере.

array(8) < [0]=>string(4) «name» [1]=> string(0) «» [2]=> string(3) «num» [3]=> [4]=> string(0) «» [5]=> [6]=> string(4) «Alex» [7]=> string(0) «» > array(3) < [0]=>string(4) «name» [2]=> string(3) «num» [6]=> string(4) «Alex» >

Функция пропустит все пустые элемент массива, в том числе NULL и false и выведет только те, в которых что-то есть. Мы так же можем проверить какой именно элемент массива был пустой с помощью цикла for.

array(4) < ["age"]=>int(34) [«name»]=> string(4) «Ivan» [«city»]=> string(0) «» [«number»]=> string(0) «» > array(2) < ["age"]=>int(34) [«name»]=> string(4) «Ivan» >

Проверить наличие элемента в массиве

Для этих целей подойдет функция in_array. Она проверяет на присутствие в массиве значения.

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

Источник

Как определить, является ли переменная массивом

Каков лучший де-факто стандартный кросс-браузерный метод для определения, является ли переменная в JavaScript массивом или нет?

При поиске в Интернете есть несколько разных предложений, некоторые из которых хороши, а многие недействительны.

Например, следующий является основным подходом:

Однако обратите внимание, что происходит, если массив пуст или объект obj на самом деле не является массивом, но реализует свойство длины и т. Д.

Итак, какая реализация является лучшей с точки зрения фактической работы, кросс-браузерности и эффективности работы?

12 ответов

Это не будет работать, если объект передается через границы фрейма, так как каждый фрейм имеет свой собственный Array объект. Вы можете обойти это, проверив внутреннее свойство [[Class]] объекта. Чтобы получить его, используйте Object.prototype.toString() (это гарантированно работает в ECMA-262):

Приведение к объекту необходимо для правильной работы с массивоподобными примитивами (т. Е. Строками).

Вот код для надежных проверок массивов JS:

И повторяемые (то есть непустые) объекты, похожие на массивы:

Если вам нужно решение, которое работает во всех браузерах, вы можете использовать:

Это не совсем неразрывно, но это будет сломано только тем, кто изо всех сил пытается сломать это. Это работает вокруг проблем в IE7 и ниже и IE9. Ошибка по-прежнему существует в IE 10 PP2, но ее можно исправить до выпуска.

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

Источник

Как проверить, является ли переменная массивом в JavaScript? [дубликат]

этот вопрос уже есть ответ здесь:

Я хотел бы проверить, является ли переменная массивом или одним значением в JavaScript.

Я нашел возможное решение.

Это лучший способ сделать это?

23 ответов

существует несколько способов проверить, является ли переменная массивом или нет. Лучшее решение-это то, которое вы выбрали.

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

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

некоторые другие способы:

этот последний, на мой взгляд, самый уродливый, и это один из самый медленный. Запуск около 1/5 скорости в качестве первого примера. Матрица.прототип, на самом деле массив. подробнее об этом можно прочитать здесь https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray

Итак, еще одно обновление

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

кроме того, я провел тест:http://jsperf.com/instanceof-array-vs-array-isarray/33 так что повеселись и проверь это.

Примечание: @EscapeNetscape создал еще один тест как jsperf.com вниз. http://jsben.ch/#/QgYAV я хотел убедиться, что оригинальная ссылка остается всякий раз, когда jsperf возвращается в интернет.

вы также можете использовать:

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

по состоянию на ES5 теперь также:

но это сломается в старых браузерах, если вы не используете polyfills (в основном. IE8 или похожие).

Я заметил, что кто-то упомянул jQuery, но я не знал, что есть isArray()

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

в современных браузерах (и некоторых устаревших браузерах) вы можете сделать

(при поддержке Chrome 5, Firefox 4.0, IE 9, Opera 10.5 и Safari 5)

Если вам нужно поддерживать более старые версии IE, вы можете использовать в ES5-shim и к массиву polyfill.isArray; или добавьте следующее

Если вам не надо обнаружение массивов, созданных в разных кадрах, вы также можете просто использовать instanceof

Примечание: the arguments ключевое слово, которое может быть использовано для доступа к аргументу функции, не является массивом, хотя он (обычно) ведет себя как один:

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

добавление прототипа в массив делает его очень простым

теперь если у вас есть объект, который вы хотите проверить, чтобы увидеть, если массив все, что вам нужно, чтобы проверить новое свойство

isArray доступен, только если его массив

мне лично нравится предложение Петра:https://stackoverflow.com/a/767499/414784 (для ECMAScript 3. Для ECMAScript 5, Используйте Array.isArray() )

комментарии к сообщению указывают, однако, что если toString() изменяется вообще, этот способ проверки массива завершится ошибкой. Если вы действительно хотите быть конкретным и убедитесь, что toString() не было изменено, и нет никаких проблем с атрибутом класса объектов ( [object Array] является атрибутом класса объекта, который является массивом), тогда я рекомендую сделать что-то вроде этого:

когда я опубликовал этот вопрос, версия JQuery, которую я использовал, не включала

думал, что я добавлю еще один вариант для тех, кто уже может использовать подчеркивание.библиотека js в их сценарии. Подчеркивать.js имеет функцию isArray () (см. http://underscorejs.org/#isArray).

возвращает true, если объект является массивом.

Если вы имеете дело только с EcmaScript 5 и выше, вы можете использовать встроенный Array.isArray функции

Если вы используете Angular, вы можете использовать angular.параметры isarray() функция

в Крокфорд это JavaScript Хорошие Части, есть функция для проверки, является ли данный аргумент массивом:

во-первых, мы спрашиваем, является ли значение истинным. Мы делаем это, чтобы отклонить null и другие ложные значения. Во-вторых, мы спрашиваем, является ли значение typeof «object». Это будет верно для объектов, массивов и (странно) null. В-третьих, мы спрашиваем, имеет ли значение свойство length, которое является числом. Это всегда будет верно для массивов, но обычно не для предметов. В-четвертых, мы спрашиваем, содержит ли значение метод splice. Это снова будет верно для всех массивов. Наконец, мы спрашиваем, является ли свойство length перечислимым (будет ли длина создаваться циклом for in?). Это будет false для всех массивов. Это самый надежный тест для arrayness, который я нашел. К сожалению, это так сложно.

я использовал эту строку кода:

универсальное решение ниже:

начиная с ECMAScript 5, формальным решением является:

кроме того, для старых библиотек JavaScript вы можете найти ниже решение, хотя оно недостаточно точно:

для тех, кто кода-гольф, ненадежный тест с наименьшим количеством символов:

это обычно используется при обходе/уплощение иерархии:

мне понравился ответ Брайана:

но вы могли бы просто сделать вот так:

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

Я еще не уверен в производительности, но это попытка правильно определить тип.

он работает, подобно текущему typeof.

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

Я думаю, используя myObj.конструктор= = объект и myArray.constructor= = Array-лучший способ. Его почти 20x быстрее, чем с помощью toString(). Если вы расширяете объекты своими собственными конструкторами и хотите, чтобы эти творения считались «объектами», это не работает, но в противном случае его путь быстрее. typeof так же быстро, как метод конструктора, но typeof []==’object’ возвращает true, что часто будет нежелательным. http://jsperf.com/constructor-vs-tostring

следует отметить, что null.конструктор выдаст ошибку, поэтому, если вы можете проверять значения null, вам придется сначала сделать if (testThing!==null) <>

Underscorejs и несколько других библиотек используют этот короткий и простой трюк.

Источник

Как проверить, является ли переменная массивом в JavaScript?

Метод Array.isArray () проверяет, является ли переданная переменная объектом Array.

Синтаксис:

Он возвращает истинное логическое значение, если переменная является массивом, и false, если это не так. Это показано в примере ниже.

Пример-1:

How to check if a variable

is an array in JavaScript?

h1 style = «color: green» >

How to check if a variable

is an array in JavaScript?

Click on the button to check

if the variable is an array

p >Output for string:

div class = «outputString» >

p >Output for number:

div class = «outputNumber» >

p >Output for array:

div class = «outputArray» >

button onclick = «checkArray()» >

script type = «text/javascript» >

let str = ‘This is a string’;

let arr = [10, 20, 30, 40];

Выход:

с помощью какой функции можно проверить является ли переменная массивом

Синтаксис:

Оператор возвращает истинное логическое значение, если переменная такая же, как указано (здесь массив), и ложь, если это не так. Это показано в примере ниже.

Пример-2:

How to check if a variable is

an array in JavaScript?

h1 style = «color: green» >

How to check if a variable is

an array in JavaScript?

Click on the button to check

if the variable is an array

p >Output for string:

div class = «outputString» > div >

p >Output for number:

div class = «outputNumber» > div >

p >Output for array:

div class = «outputArray» > div >

button onclick = «checkArray()» >Click here button >

Источник

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

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