Как я могу проверить, пуста ли переменная в Javascript? Извините за глупый вопрос, но я новичок в Javascript!
if(response.photo) is empty {
do something
else {
do something else
}
response.photo
был из JSON, и иногда он мог быть пустым, пустыми ячейками данных! Я хочу проверить, пусто ли оно.
javascript
jquery
Джон Вудврик
источник
источник
false
?PHP
s в JavaScriptempty()
в более удобном для чтения виде. stackoverflow.com/a/33319704/3779853Ответы:
Если вы проверяете пустую строку:
if(myVar === ''){ // do stuff };
Если вы проверяете переменную, которая была объявлена, но не определена:
if(myVar === null){ // do stuff };
Если вы проверяете переменную, которая не может быть определена:
if(myVar === undefined){ // do stuff };
Если вы проверяете оба значения, то есть любая переменная имеет значение null или undefined:
if(myVar == null){ // do stuff };
источник
undefined
«константу», так как это вообще не константа.typeof myVar === 'undefined'
Вместо этого используйте .var undefined = 1;
сломаю ваш третий пример. Всегда используйтеtypeof
и проверяйте"undefined"
.if(typeof variable === "undefined")
Это более серьезный вопрос, чем вы думаете. Переменные могут опустошаться разными способами. Типа зависит от того, что вам нужно знать.
// quick and dirty will be true for '', null, undefined, 0, NaN and false. if (!x) // test for null OR undefined if (x == null) // test for undefined OR null if (x == undefined) // test for undefined if (x === undefined) // or safer test for undefined since the variable undefined can be set causing tests against it to fail. if (typeof x == 'undefined') // test for empty string if (x === '') // if you know its an array if (x.length == 0) // or if (!x.length) // BONUS test for empty object var empty = true, fld; for (fld in x) { empty = false; break; }
источник
!x
неверно для пустого массива.Это должно охватывать все случаи:
function empty( val ) { // test results //--------------- // [] true, empty array // {} true, empty object // null true // undefined true // "" true, empty string // '' true, empty string // 0 false, number // true false, boolean // false false, boolean // Date false // function false if (val === undefined) return true; if (typeof (val) == 'function' || typeof (val) == 'number' || typeof (val) == 'boolean' || Object.prototype.toString.call(val) === '[object Date]') return false; if (val == null || val.length === 0) // null or 0 length array return true; if (typeof (val) == "object") { // empty object var r = true; for (var f in val) r = false; return r; } return false; }
источник
Я вижу потенциальные недостатки многих решений, опубликованных выше, поэтому решил скомпилировать собственное.
Примечание: он использует Array.prototype.some , проверьте поддержку вашего браузера.
В приведенном ниже решении переменная считается пустой, если верно одно из следующих условий:
false
, которая уже охватывает многие вещи , как0
,""
,[]
, и даже[""]
и[0]
null
или тип'undefined'
Это объект / массив, состоящий только из значений, которые сами по себе пусты (т.е. разбиты на примитивы, каждая из которых равна
false
). Проверки рекурсивно переходят в структуру объекта / массива. НапримерisEmpty({"": 0}) // true isEmpty({"": 1}) // false isEmpty([{}, {}]) // true isEmpty(["", 0, {0: false}]) //true
Код функции:
/** * Checks if value is empty. Deep-checks arrays and objects * Note: isEmpty([]) == true, isEmpty({}) == true, isEmpty([{0:false},"",0]) == true, isEmpty({0:1}) == false * @param value * @returns {boolean} */ function isEmpty(value){ var isEmptyObject = function(a) { if (typeof a.length === 'undefined') { // it's an Object, not an Array var hasNonempty = Object.keys(a).some(function nonEmpty(element){ return !isEmpty(a[element]); }); return hasNonempty ? false : isEmptyObject(Object.keys(a)); } return !a.some(function nonEmpty(element) { // check if array is really not empty as JS thinks return !isEmpty(element); // at least one element should be non-empty }); }; return ( value == false || typeof value === 'undefined' || value == null || (typeof value === 'object' && isEmptyObject(value)) ); }
источник
[{},0,""]
. Все остальные решения здесь - это просто двухстрочные, которые не идут на расстояние, и функция подчеркивания, которая работает для объектов и требует библиотеки.Вот мое самое простое решение.
function empty(n){ return !(!!n ? typeof n === 'object' ? Array.isArray(n) ? !!n.length : !!Object.keys(n).length : true : false); } //with number console.log(empty(0)); //true console.log(empty(10)); //false //with object console.log(empty({})); //true console.log(empty({a:'a'})); //false //with array console.log(empty([])); //true console.log(empty([1,2])); //false //with string console.log(empty('')); //true console.log(empty('a')); //false
источник
См. Http://underscorejs.org/#isEmpty
isEmpty_.isEmpty (object) Возвращает истину, если перечисляемый объект не содержит значений (нет перечисляемых собственных свойств). Для строк и объектов, подобных массиву, _.isEmpty проверяет, равно ли значение свойства length 0.
источник
Объединение ответов от @inkednm в одну функцию:
function isEmpty(property) { return (property === null || property === "" || typeof property === "undefined"); }
источник
property == null
для комбинированной проверкиnull
иundefined
Пустая проверка ключа JSON зависит от варианта использования. Для распространенного варианта использования мы можем проверить следующее:
null
undefined
''
{}
[]
(массив - это объект)Функция:
function isEmpty(arg){ return ( arg == null || // Check for null or undefined arg.length === 0 || // Check for empty String (Bonus check for empty Array) (typeof arg === 'object' && Object.keys(arg).length === 0) // Check for empty Object or Array ); }
Вернуть верно для:
isEmpty(''); // Empty String isEmpty(null); // null isEmpty(); // undefined isEmpty({}); // Empty Object isEmpty([]); // Empty Array
источник
просто поместите переменную в условие if, если переменная имеет какое-либо значение, она вернет true, иначе false.
if (response.photo){ // if you are checking for string use this if(response.photo == "") condition alert("Has Value"); } else { alert("No Value"); };
источник
А как насчет этого?
JSON.stringify({}) === "{}"
источник
Это зависит от того, что вы подразумеваете под «пустым». Наиболее распространенная схема, чтобы проверить , чтобы увидеть , если переменная не определена . Многие люди также выполняют нулевую проверку, например:
if (myVariable === undefined || myVariable === null)...
или, в более короткой форме:
if (myVariable || myVariable === null)...
источник
undefined
«константу», так как это вообще не константа.typeof myVar === 'undefined'
Вместо этого используйте .if (myVar == undefined)
будет работать, чтобы увидеть, объявлен ли var, но не инициализирован.
источник
undefined
может быть переопределено в коде (т.е.undefined = true
действительно).undefined
«константу», так как это вообще не константа.typeof myVar === 'undefined'
Вместо этого используйте .Проверить на неопределенное:
if (typeof response.photo == "undefined") { // do something }
Это будет эквивалент vb
IsEmpty
. Если myvar содержит какое-либо значение, даже null, пустую строку или 0, оно не является «пустым».Чтобы проверить, существует ли переменная или свойство, например, они были объявлены, хотя, возможно, не были определены, вы можете использовать
in
оператор.if ("photo" in response) { // do something }
источник
Если вы ищете эквивалент функции PHP
empty
, обратите внимание на это:function empty(mixed_var) { // example 1: empty(null); // returns 1: true // example 2: empty(undefined); // returns 2: true // example 3: empty([]); // returns 3: true // example 4: empty({}); // returns 4: true // example 5: empty({'aFunc' : function () { alert('humpty'); } }); // returns 5: false var undef, key, i, len; var emptyValues = [undef, null, false, 0, '', '0']; for (i = 0, len = emptyValues.length; i < len; i++) { if (mixed_var === emptyValues[i]) { return true; } } if (typeof mixed_var === 'object') { for (key in mixed_var) { // TODO: should we check for own properties only? //if (mixed_var.hasOwnProperty(key)) { return false; //} } return true; } return false; }
http://phpjs.org/functions/empty:392
источник
что мне не хватает, если пустой массив ... объект без ключа ... ложность const isEmpty = o => Array.isArray (o) &&! o.join (''). length || typeof o === 'object' &&! Object.keys (o) .length || ! (+ значение);
источник
Вот более простое (короткое) решение для проверки пустых переменных. Эта функция проверяет, пуста ли переменная. Предоставленная переменная может содержать смешанные значения (null, undefined, массив, объект, строка, целое число, функция).
function empty(mixed_var) { if (!mixed_var || mixed_var == '0') { return true; } if (typeof mixed_var == 'object') { for (var k in mixed_var) { return false; } return true; } return false; } // example 1: empty(null); // returns 1: true // example 2: empty(undefined); // returns 2: true // example 3: empty([]); // returns 3: true // example 4: empty({}); // returns 4: true // example 5: empty(0); // returns 5: true // example 6: empty('0'); // returns 6: true // example 7: empty(function(){}); // returns 7: false
источник
const isEmpty = val => val == null || !(Object.keys(val) || val).length;
источник
function isEmpty(variable) { const type = typeof variable if (variable === null) return true if (type === 'undefined') return true if (type === 'boolean') return false if (type === 'string') return !variable if (type === 'number') return false if (Array.isArray(variable)) return !variable.length if (type === 'object') return !Object.keys(variable).length return !variable }
источник