【问题标题】:Check if Object is empty with JavaScript/jQuery使用 JavaScript/jQuery 检查对象是否为空
【发布时间】:2012-12-20 14:07:03
【问题描述】:

我有一个这样的对象:

ricHistory = {
  name1: [{
    test1: value1,
    test2: value2,
    test3: value3
  }],
  name2: [{
    test1: value1,
    test2: value2,
    test3: value3
  }]
};

现在我想检查是否例如name2 在 Javascript/jQuery 中为空。我知道方法hasOwnPropertydata.hasOwnProperty('name2') 仅在名称存在或不存在时才有效,但我必须检查它是否为空。

【问题讨论】:

标签: javascript jquery json


【解决方案1】:

您可以通过jQuery.isEmptyObject() 完成此操作

检查对象是否为空(不包含任何属性)。

jQuery.isEmptyObject( object )

例子:

jQuery.isEmptyObject({}) // true
jQuery.isEmptyObject({ foo: "bar" }) // false

from Jquery

【讨论】:

    【解决方案2】:

    另一个来自 JQuery 的语法是你没有使用 Prototype 或类似的,你更喜欢使用 $ 而不是 jQuery 前缀;

    $.isEmptyObject( object )
    

    【讨论】:

      【解决方案3】:

      试试这个:

      if (ricHistory.name2 && 
          ricHistory.name2 instanceof Array &&
          !ricHistory.name2.length) {
         console.log('name2 is empty array');
      } else {
         console.log('name2 does not exists or is not an empty array.');
      }
      

      上面的解决方案会告诉你richHistory.name2是否存在,是一个数组并且不为空。

      【讨论】:

      • 为什么不把所有三张支票合二为一呢?
      【解决方案4】:

      试试这个有用的功能:

      function isEmpty(obj) {
      if(isSet(obj)) {
          if (obj.length && obj.length > 0) { 
              return false;
          }
      
          for (var key in obj) {
              if (hasOwnProperty.call(obj, key)) {
                  return false;
              }
          }
      }
      return true;    
      };
      
      function isSet(val) {
      if ((val != undefined) && (val != null)){
          return true;
      }
      return false;
      };
      

      【讨论】:

      • 你可以通过这样做来缩短isSetfunction isSet(val) { return ((val != undefined) && (val != null));} 我发现只返回语句的布尔值而不是处理然后返回更容易。
      【解决方案5】:

      我的代码中一直都是这样的:

      假设我的控制器返回如下内容:

      $return['divostar'] = $this->report->get_additional_divostar_report($data);
      $return['success'] = true;
      return response()->json($return);
      

      在 Jquery 中,我会检查如下:

      if (jQuery.isEmptyObject(data.divostar)){
            html_result = "<p id='report'>No report yet</p>";
            $('#no_report_table').html(html_result).fadeIn('fast');
      } 
      

      【讨论】:

        【解决方案6】:

        肮脏但简单且有效:

        function isEmptyObject(obj) {
          return JSON.stringify(obj) == '{}';
        }
        

        【讨论】:

          【解决方案7】:
          if (ricHistory.name2 === undefined) {
             //This is property has not been set (which is not really the same as empty though...)
          }
          

          【讨论】:

            猜你喜欢
            • 2017-08-06
            • 2015-04-11
            • 1970-01-01
            • 2010-12-23
            • 1970-01-01
            • 2017-11-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多