use*_*395 14 javascript underscore.js lodash
是否有一些优雅的方法可以使用lodash/underscore从这个对象中过滤出虚假属性?类似于如何_.compact(array)
从数组中删除falsey元素
所以
{
propA: true,
propB: true,
propC: false,
propD: true,
}
Run Code Online (Sandbox Code Playgroud)
回国
{
propA: true,
propB: true,
propD: true,
}
Run Code Online (Sandbox Code Playgroud)
Ret*_*sam 24
你想要的_.pick
,它需要一个函数作为参数,并返回一个只包含该函数返回truthy的键的对象.所以你可以这样做:
filtered = _.pick(obj, function(value, key) {return value;})
Run Code Online (Sandbox Code Playgroud)
或者甚至更简洁:
filtered = _.pick(obj, _.identity)
Run Code Online (Sandbox Code Playgroud)
Lodash 4.0将_.pick
函数拆分为_.pick
,它采用了一系列属性,并且_.pickBy
具有一个函数.所以现在就是这样
filtered = _.pickBy(obj, function(value, key) {return value;})
Run Code Online (Sandbox Code Playgroud)
或者,由于_.pickBy
默认使用_.identity
第二个参数,它可以写成:
filtered = _.pickBy(obj);
Run Code Online (Sandbox Code Playgroud)
I a*_*ica 13
这里有两个vanilla javascript选项:
答:迭代对象的键和delete
具有假值的键.
var obj = {
propA: true,
propB: true,
propC: false,
propD: true,
};
Object.keys(obj).forEach(key => {
if (!obj[key]) delete obj[key];
});
console.log(obj);
Run Code Online (Sandbox Code Playgroud)
见和Object.keys()
Array.prototype.forEach()
B.:迭代对象的键并将truthy值添加到新对象.
var obj = {
propA: true,
propB: true,
propC: false,
propD: true,
};
var filteredObj = Object.keys(obj).reduce((p, c) => {
if (obj[c]) p[c] = obj[c];
return p;
}, {});
console.log(filteredObj);
Run Code Online (Sandbox Code Playgroud)
见和Object.keys()
Array.prototype.reduce()
归档时间: |
|
查看次数: |
22984 次 |
最近记录: |