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

时间:2012-06-21 05:36:59

标签: 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
}

我正在尝试编写一个快速函数来处理整个对象,以确定是否有任何键的非空值。有任何建议,只需几行代码即可有效地完成这项工作?我的项目已经使用了underscore.js,所以如果这样可以加快速度或使其更简洁,那就更好了。

3 个答案:

答案 0 :(得分:4)

单线,怎么样,

_.any(_.values(a), function (v) { return !_.isNull(v) });

如果至少有一个非空值,则返回true。

答案 1 :(得分:3)

var hasVal = false;
for (var prop in obj) {
    hasVal = obj.hasOwnProperty(prop) && obj[prop] !== null;
    if (hasVal) break;
}

答案 2 :(得分:1)

您可以将_.find_.isNull结合使用:

var has_a_null = _.chain(o).find(_.isNull).isNull().value();

或类似地:

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

演示:http://jsfiddle.net/ambiguous/t678w/