use*_*182 16 javascript object underscore.js
如果对象键名称的值为true,我该如何返回它?
我正在使用下划线,我唯一看到的是如何返回容易的键,我想尽可能避免冗余迭代:
例:
Object {1001: true, 1002: false}
Run Code Online (Sandbox Code Playgroud)
我想要一个只有1001的数组......
ade*_*neo 25
Object.keys从对象获取键,然后您可以根据值过滤键
var obj = {1001: true, 1002: false};
var keys = Object.keys(obj);
var filtered = keys.filter(function(key) {
return obj[key]
});
Run Code Online (Sandbox Code Playgroud)
Tom*_*Tom 10
还有另一种方法,可以使用两种方法与Lodash库一起使用:
_.pickBy - 它创建一个由对象属性组成的对象.如果没有其他参数(谓词),则所有返回的属性都将具有真值._.keys(object) - 从给定对象创建一个键数组所以在你的例子中它将是:
var obj = {1001: true, 1002: false};
var keys = _.keys(_.pickBy(obj));
// keys variable is ["1001"]
Run Code Online (Sandbox Code Playgroud)
使用Underscore.js库,它将非常相似.你需要使用_.pick和_.keys功能.唯一的区别是_.pick需要具有谓词函数,即_.identity.
所以代码如下:
var obj = {1001: true, 1002: false};
var keys = _.keys(_.pick(obj, _.identity));
// keys variable is ["1001"]
Run Code Online (Sandbox Code Playgroud)
我希望这会有所帮助
如果您尝试将过滤和迭代结合起来,您通常需要的对象_.reduce(瑞士军刀迭代器):
var trues = _(obj).reduce(function(trues, v, k) {
if(v === true)
trues.push(k);
return trues;
}, [ ]);
Run Code Online (Sandbox Code Playgroud)
演示: http: //jsfiddle.net/ambiguously/2et6T/
| 归档时间: |
|
| 查看次数: |
14990 次 |
| 最近记录: |