Javascript 如何确定对象中的任何值是否为非null?

Javascript 如何确定对象中的任何值是否为非null?,javascript,underscore.js,Javascript,Underscore.js,在Javascript中,我正在处理一些JSON数据,其形式如下: o = { a: null, b: null, c: 1, d: null // ... 10 or so other properties that are either null or numerical } 我正在尝试编写一个快速函数,它将处理整个对象,以确定任何键是否存在任何非空值。有什么建议可以有效地用几行代码来实现这一点吗?我的项目已经使用了underline.js,因此如果这样可以加快进度或使

在Javascript中,我正在处理一些JSON数据,其形式如下:

o = {
  a: null,
  b: null,
  c: 1,
  d: null
  // ... 10 or so other properties that are either null or numerical
}

我正在尝试编写一个快速函数,它将处理整个对象,以确定任何键是否存在任何非空值。有什么建议可以有效地用几行代码来实现这一点吗?我的项目已经使用了underline.js,因此如果这样可以加快进度或使其更简洁,那就更好了。

那一行呢

var hasVal = false;
for (var prop in obj) {
    hasVal = obj.hasOwnProperty(prop) && obj[prop] !== null;
    if (hasVal) break;
}
_.any(_.values(a), function (v) { return !_.isNull(v) });
如果至少有一个非空值,则返回true。

您可以与以下组合使用:

或类似地:

var has_a_null = _(o).find(_.isNull) === null

演示:

它看起来像
\uu.any(a,函数(v){return!\uu.isNull(v)})也同样有效。我确认,如果将一个对象传递给u.any,它只需遍历键并获取每个键的值,然后使用迭代器函数测试这些值。有什么理由不使用这个更短的版本吗?事实上,它可以工作,因为迭代器将作为参数传递(值、键)。如果只有一个,则只需丢弃密钥。你应该很好…我喜欢使用
来帮助其他开发人员知道你在使用什么类型的对象<代码>\u0.every(\u0.values(a),\u0.isNull)
var has_a_null = _(o).find(_.isNull) === null