假设我有一个这样的对象:
{ "foo" : true, "bar" : false, "gob" : true, "lob" : false }
Run Code Online (Sandbox Code Playgroud)
我想将它减少为具有相关真值的字符串键数组:
[ "foo", "gob" ]
Run Code Online (Sandbox Code Playgroud)
我怎么用下划线做这个?
一种可能的方法:
var obj = { "foo" : true, "bar" : false, "gob" : true, "lob" : false };
var res = _.filter(_.keys(obj), function(k) { return obj[k]; });
console.log(res); // ['foo', 'gob']
Run Code Online (Sandbox Code Playgroud)
演示.换句话说,我们收集给定对象的所有键,然后过滤掉相应值为假的那些键.
替代方案(基于减少):
var res = _.reduce(obj, function(memo, v, k) {
if (v) {
memo.push(k);
}
return memo;
}, []);
Run Code Online (Sandbox Code Playgroud)
演示.它作为一个代码更复杂,但它只是一次遍历集合.
| 归档时间: |
|
| 查看次数: |
2028 次 |
| 最近记录: |