如何使用lodash _.map删除密钥

时间:2016-01-24 19:58:39

标签: javascript lodash

我有一个lodash map函数,有时在给定键的重要属性中有一个空值,在这种情况下,我想完全从结果中删除该键。我该怎么做?

只尝试if (_.isEmpty(key.thing)) { delete key },但这没有用 - 它实际上打破了应用。

2 个答案:

答案 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可以实现filterfindreduce等。

答案 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;
}, []);