如何使用lodash过滤器从值未定义的javascript对象中删除属性?
我正在尝试将以下代码转换为使用lodash uz.filter的代码如何使用lodash过滤器从值未定义的javascript对象中删除属性?,javascript,filter,lodash,Javascript,Filter,Lodash,我正在尝试将以下代码转换为使用lodash uz.filter的代码 var substitutionValues = { one: "hi", two: undefined, three: 3}; var keys = _.keys(substitutionValues); for (var i = 0; i < keys.length; i++) { if (substitutionValues[keys[i]] === undefined) { delete subst
var substitutionValues = { one: "hi", two: undefined, three: 3};
var keys = _.keys(substitutionValues);
for (var i = 0; i < keys.length; i++) {
if (substitutionValues[keys[i]] === undefined) {
delete substitutionValues[keys[i]];
}
}
// => { one: "hi", three: 3 }
var-substitutionValues={1:“嗨”,2:未定义,3:3};
var keys=u0.keys(替换值);
对于(变量i=0;i{1:hi,3:3}
请注意,我不想使用lodash的u.reduce、u.pick或u.omit。可以用作对象的过滤器。由于..pickBy()
的默认谓词是..identity
,因此它将过滤任何falsy值(第一个示例)。如果希望更具体,请相应地定义回调(第二个示例):
var-substitutionValues={1:“嗨”,2:未定义,3:3,4:null};
/**第一个例子**/
var widthoutAllFalsyValues=u0.pickBy(替换值);
console.log(widthoutAllFalsyValues);
/**第二个例子**/
var widthoutUndefined=u.pickBy(替换值,u.negate(u.isUndefined));
console.log(widthoutUndefined)代码>
您可能需要签出pickBy
。可以在迭代对象属性时指定条件,并使用该条件筛选未定义的键。这对于Filteral来说是一个糟糕的用例,所以请查看这个相关的stackoverflow帖子:@MarcinMalinowski我意识到这不是一个好的用例,但尽管如此,我还是想知道如何做到这一点。我已经知道lodash的pickBy和omitBy了。