Проверка чего-то isEmpty в Javascript?
Как проверить, пуста ли переменная в Javascript? Извините за глупый вопрос, но я новичок в Javascript!
if(response.photo) is empty {
do something
else {
do something else
}
response.photo
был из JSON, и иногда он мог быть пустым, пустые ячейки данных! Я хочу проверить, не пуст ли он.
Ответы
Ответ 1
Если вы тестируете пустую строку:
if(myVar === ''){ // do stuff };
Если вы проверяете переменную, которая была объявлена, но не определена:
if(myVar === null){ // do stuff };
Если вы проверяете переменную, которая не может быть определена:
if(myVar === undefined){ // do stuff };
Если вы проверяете i.e, любая переменная имеет значение null или undefined:
if(myVar == null){ // do stuff };
Ответ 2
Это больший вопрос, чем вы думаете. Переменные могут быть пустыми во многих отношениях. Разница зависит от того, что вам нужно знать.
// 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;
}
Ответ 3
Это должно охватывать все случаи:
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;
}
Ответ 4
См. http://underscorejs.org/#isEmpty
isEmpty_.isEmpty(объект)
Возвращает true, если перечисляемый объект не содержит значений (нет перечислимых собственных свойств). Для строк и объектов типа массива _.isEmpty проверяет, является ли свойство length равным 0.
Ответ 5
Я вижу потенциальные недостатки во многих решениях, опубликованных выше, поэтому я решил скомпилировать свои собственные.
Примечание. использует Array.prototype.some, проверьте поддержку своего браузера.
Решение ниже рассматривает переменную пустую, если выполняется одно из следующих условий:
- JS считает, что переменная равна
false
, которая уже охватывает многие вещи, такие как 0
, ""
, []
и даже [""]
и [0]
- Значение
null
или его тип 'undefined'
- Это пустой объект
-
Это объект/массив, состоящий из только значений, которые сами по себе пусты (т.е. разбиты на примитивы, каждая из которых равна false
). Проверяет сверление рекурсивно в структуре Object/Array.
Например.
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 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))
);
}
Ответ 6
Как насчет того, чтобы делать так?
JSON.stringify({}) === "{}"
Ответ 7
Объединение ответов из @inkednm в одну функцию:
function isEmpty(property) {
return (property === null || property === "" || typeof property === "undefined");
}
Ответ 8
Проверьте undefined:
if (typeof response.photo == "undefined")
{
// do something
}
Это сделало бы эквивалент vb IsEmpty
. Если myvar содержит любое значение, даже null, пустую строку или 0, это не "пусто".
Чтобы проверить, существует ли переменная или свойство, например, она была объявлена, хотя она может и не быть определена, вы можете использовать оператор in
.
if ("photo" in response)
{
// do something
}
Ответ 9
Это зависит от того, что вы подразумеваете под "пустым". Наиболее распространенный шаблон - проверить, соответствует ли переменная undefined. Многие люди также выполняют нулевую проверку, например:
if (myVariable === undefined || myVariable === null)...
или, в более короткой форме:
if (myVariable || myVariable === null)...
Ответ 10
if (myVar == undefined)
будет работать, чтобы узнать, объявлен ли var, но не инициализирован.
Ответ 11
Если вы ищете эквивалент функции 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
Ответ 12
что мне не хватает, если пустой массив... keyless object... falseness
const isEmpty = o = > Array.isArray(o) && &! o.join(''). length || typeof o === 'object' && &! Object.keys(o).length ||! (+ Значение);
Ответ 13
просто поместите переменную в условие if, если переменная имеет любое значение, она вернет true else false.
if (response.photo){ // if you are checking for string use this if(response.photo == "") condition
alert("Has Value");
}
else
{
alert("No Value");
};
Ответ 14
Здесь более простое (короткое) решение для проверки пустых переменных. Эта функция проверяет, является ли переменная пустой. Предоставленная переменная может содержать смешанные значения (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
Ответ 15
const isEmpty = val => val == null || !(Object.keys(val) || val).length;
Ответ 16
Здесь мое самое простое решение.
Вдохновленный empty
функцией PHP
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