0

在 Javascript 中,我正在处理一些采用以下形式的 JSON 数据:

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

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

4

3 回答 3

5

单线呢,

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

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

于 2012-06-21T06:20:07.517 回答
3
var hasVal = false;
for (var prop in obj) {
    hasVal = obj.hasOwnProperty(prop) && obj[prop] !== null;
    if (hasVal) break;
}
于 2012-06-21T05:43:03.197 回答
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/

于 2012-06-21T06:26:54.163 回答