在Java脚本中检查某些内容是空的吗?

tnkciper  于 2022-09-21  发布在  Java
关注(0)|答案(22)|浏览(178)

如何检查Java脚本中的变量是否为空?

if(response.photo) is empty {
    do something
else {
    do something else
}

response.photo来自JSON,有时可能是空的,空的数据单元格!我想确认一下它是不是空的。

irtuqstp

irtuqstp1#

如果要测试空字符串:

if(myVar === ''){ // do stuff };

如果要检查已声明但未定义的变量:

if(myVar === null){ // do stuff };

如果您正在检查可能未定义的变量:

if(myVar === undefined){ // do stuff };

如果同时选中两个变量,即变量为空或未定义:

if(myVar == null){ // do stuff };
chhqkbe1

chhqkbe12#

这是一个比你想象的更大的问题。变量可以通过多种方式清空。这在某种程度上取决于你需要知道什么。

// 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;
}
cidc1ykv

cidc1ykv3#

这应涵盖所有情况:

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;
}
azpvetkf

azpvetkf4#

我在上面发布的许多解决方案中看到了潜在的缺点,因此我决定编写我自己的解决方案。

**注意:**它使用Array.prototype.some,请检查您的浏览器支持。

如果满足以下条件之一,则下面的解决方案认为变量为空:

1.JS认为变量等于false,已经涵盖了0""[],甚至[""][0]
1.取值为null或类型为'undefined'
1.为空对象
1.它是一个对象/数组,由个本身为空的值组成(即分解为基元,每个基元的每个部分都等于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))
  );
}
z0qdvdin

z0qdvdin5#

这是我最简单的解决方案。
灵感来自PHPempty函数

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
ac1kyiln

ac1kyiln6#

@SJ00答案的可读性更强:

/**
 * Checks if a JavaScript value is empty
 * @example
 *    isEmpty(null); // true
 *    isEmpty(undefined); // true
 *    isEmpty(''); // true
 *    isEmpty([]); // true
 *    isEmpty({}); // true
 * @param {any} value - item to test
 * @returns {boolean} true if empty, otherwise false
 */
function isEmpty(value) {
    return (
        value === null || // check for null
        value === undefined || // check for undefined
        value === '' || // check for empty string
        (Array.isArray(value) && value.length === 0) || // check for empty array
        (typeof value === 'object' && Object.keys(value).length === 0) // check for empty object
    );
}
4xrmg8kj

4xrmg8kj7#

请参阅http://underscorejs.org/#isEmpty

如果可枚举对象不包含任何值(没有可枚举的自身属性),则isEmpty_.isEmpty(Object)返回TRUE。对于字符串和类似数组的对象,_.isEmpty检查长度属性是否为0。

ccrfmcuu

ccrfmcuu8#

将@inkednm的答案合并为一个函数:

function isEmpty(property) {
      return (property === null || property === "" || typeof property === "undefined");
   }
rkttyhzu

rkttyhzu9#

对JSON键的空检查取决于用例。对于常见用例,我们可以测试以下内容:

1.不是null
1.不是undefined
1.非空字符串''
1.非空对象{}``[](数组为对象)

职能:

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
  );
}

为以下项返回TRUE:

isEmpty(''); // Empty String
isEmpty(null); // null
isEmpty(); // undefined
isEmpty({}); // Empty Object
isEmpty([]); // Empty Array
qojgxg4l

qojgxg4l10#

只要将变量放在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");
};
2eafrhcq

2eafrhcq11#

这样做怎么样?

JSON.stringify({}) === "{}"

9nvpjoqh

9nvpjoqh12#

这取决于你所说的“空”是什么意思。最常见的模式是检查变量是否为undefined。许多人也会执行空值检查,例如:
if (myVariable === undefined || myVariable === null)...

或者,用一种更简短的形式:
if (myVariable || myVariable === null)...

8xiog9wr

8xiog9wr13#

if (myVar == undefined)

将查看var是否已声明但未初始化。

px9o7tmv

px9o7tmv14#

检查是否有未定义:

if (typeof response.photo == "undefined")
{
    // do something
}

这将完成vb的IsEmpty的等价物。如果myvar包含任何值,即使是NULL、空字符串或0,它也不是“空的”。

要检查变量或属性是否存在,例如它已声明,但可能尚未定义,您可以使用in操作符。

if ("photo" in response)
{
    // do something
}
hgc7kmma

hgc7kmma15#

如果您正在寻找与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

相关问题