我有一个lodash map函数,有时在给定键的重要属性中有一个空值,在这种情况下,我想完全从结果中删除该键。我该怎么做?
只尝试if (_.isEmpty(key.thing)) { delete key }
,但这没有用 - 它实际上打破了应用。
答案 0 :(得分:6)
您可以使用reduce
功能并在那里过滤空值。
_.reduce(yourArray, function(result, currentItem) {
var itemAfterSomeOperations;
if (!_.isEmpty(currentItem.thing)) {
//here you can do any operations like in your _.map handler function
//and then push the updated item after your operations in the resulted array
itemAfterSomeOperations = someOperationOnItemAndReturnNewValue(currentItem);
result.push(itemAfterSomeOperations);
}
return result;
}, []);
您不需要删除密钥,因为_.map
以及_.reduce
将返回包含您想要的任何项目的新数组。
请注意,map
可以实现filter
,find
,reduce
等。
答案 1 :(得分:2)
你描述的是过滤,而不是映射。
_.filter(yourArray, function(v){ return !_.isEmpty(v.thing)});
是的,但我所说的是和其他许多操作一样。
然后使用reduce
_.reduce(yourArray, function(out, v){
if(!_.isEmpty(v.thing)){
//process you data and push some value
//to the output if you like
out.push(mapingFunction(v));
}
return out;
}, []);