【问题标题】:_.isEmpty() shows not empty but displays as empty_.isEmpty() 显示不为空但显示为空
【发布时间】:2016-03-04 14:05:46
【问题描述】:

我正在从rateit Meteor 包中获取信息。该软件包用于显示和获取用户填写的星级。当我得到一个未填写的评分值时(var buyUniq = $(".paymentRate").rateit('value')

该值显示为 [](什么都没有)。

typeof buyUniq 表明它是一个对象。

使用 JS 的 Boolean() 对象包装器,它返回 true。

Boolean(buyUniq)

下划线的_.isEmpty()表示对象不为空(返回false)

_.isEmpty(buyUniq)

为什么对象显示不为空

【问题讨论】:

  • 空对象{} 为真。相反,任何非原始的都是 true 甚至是空的。
  • 如何检查一个对象里面是否有任何东西?
  • 稍微改变我的问题(我认为可以这样做)。我明白为什么这是真的,但为什么下划线 _.isEmpty() 表明它不是空的?

标签: javascript jquery meteor underscore.js


【解决方案1】:

转换为布尔值的对象评估为真

试试这个简单的

var a = {};
Boolean(a);//outputs true

如何检查一个对象里面是否有任何东西?

只需检查对象是否有任何键

Object.keys(a).length > 0; //if returns true then it has something inside it

【讨论】:

  • 问题是您的 Object.keys(a).length > 0 时两个选项都返回 true;当情况并非如此时
  • @chackerian 对我来说并没有返回 true,var a = {};Object.keys(a).length; Object.keys(a).length > 0; 在你的控制台中试试这个
【解决方案2】:
> Boolean([]) // empty array
< true
> Boolean({}) // empty object
< true

数组长度:

myArray.length

对象长度:

Object.keys(myObject).length;

【讨论】:

    【解决方案3】:

    rateit 如果找不到选择器的值,会将值显示为对象。

    例如:

    var sellUniq = $(".describedRate").rateit('value');
    var buyUniq = $(".paymentRate").rateit('value');
    

    $(".describedRate") 存在而$(".paymentRate") 不存在。

    sellUniq 将是一个数字,而 buyUniq 将是一个非空对象。

    【讨论】:

      猜你喜欢
      • 2014-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多