仅当值为 true 时才返回对象键

新手上路,请多包涵

仅当它的值为 true 时,如何返回对象键名?

我正在使用下划线,我唯一看到的是如何返回键,这很简单,我想尽可能避免冗余迭代:

例子:

 Object {1001: true, 1002: false}

我想要一个只有 1001 的数组…

原文由 user3299182 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 688
2 个回答

Object.keys 从对象中获取键,然后你可以根据值 过滤

var obj = {1001: true, 1002: false};

var keys = Object.keys(obj);

var filtered = keys.filter(function(key) {
    return obj[key]
});

小提琴

原文由 adeneo 发布,翻译遵循 CC BY-SA 3.0 许可协议

还有另一种选择,可以使用两种方法与 Lodash 库一起使用:

  • _.pickBy 它创建一个由对象属性组成的对象。如果没有附加参数(谓词),则所有返回的属性都将具有 值。
  • _.keys(object) - 从给定的对象创建一个键数组

所以在你的例子中它将是:

 var obj = {1001: true, 1002: false};
var keys = _.keys(_.pickBy(obj));

// keys variable is ["1001"]

使用 Underscore.js 库,它会非常相似。您需要使用 _.pick_.keys 函数。唯一的区别是 _.pick 需要有谓词函数,即 _.identity

所以代码如下:

 var obj = {1001: true, 1002: false};
var keys = _.keys(_.pick(obj, _.identity));

// keys variable is ["1001"]

我希望这会有所帮助

原文由 Tom 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题