You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

含键值对的JS对象判断为空时length返回undefined的问题

解决JS对象判断为空时length返回undefined的问题

嘿,我完全懂你的困扰!你一开始想创建键值对结构,但不小心混淆了JS对象和数组的用法——数组才有length属性,而你用var a = {}创建的是普通对象,所以a.length自然会返回undefined。不过别担心,你的对象用法其实是对的(键值对用对象比数组更合适),只要换个方式判断对象是否为空就行。

几种判断JS对象是否为空的实用方法:

  • 方法1:用Object.keys()(原生JS,推荐)
    这个方法会返回对象所有可枚举属性的键组成的数组,我们只需要检查这个数组的长度是否为0:

    var a = {}; 
    $('#individual_users_result').find("li").each(function() { 
      var added_domains = $(this).attr('data-id'); 
      var added_domains_text = $(this).text().trim(); 
      a[added_domains] = added_domains_text; 
    });
    
    // 判断对象是否为空
    if (Object.keys(a).length === 0) {
      console.log("对象是空的");
    } else {
      console.log("对象包含内容");
    }
    
  • 方法2:用jQuery内置方法(适合你的场景)
    既然你已经在用jQuery,直接用$.isEmptyObject()方法更省心,它专门用来判断空对象:

    if ($.isEmptyObject(a)) {
      console.log("对象是空的");
    }
    
  • 方法3:手动遍历属性(兼容性更好,适合旧环境)
    用for...in循环遍历对象,结合hasOwnProperty确保只检查自身属性:

    function isEmptyObj(obj) {
      for (var key in obj) {
        if (obj.hasOwnProperty(key)) {
          return false;
        }
      }
      return true;
    }
    
    // 使用方法
    if (isEmptyObj(a)) {
      console.log("对象是空的");
    }
    

补充说明:

你不需要把对象改成数组,因为你的需求是用data-id作为键、文本作为值的映射关系,对象的结构完全匹配这个需求——数组的键只能是数字索引,反而不适合你的场景。之前的代码逻辑没问题,只是判断空的方式选错了~

内容的提问来源于stack exchange,提问作者Cesar Bielich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:31:12