使用Lodash根据键数组从现有对象生成新对象

时间:2017-11-16 18:22:17

标签: filtering lodash

我对Lodash相对较新,我正在尝试做一些我确信非常容易的事情。

我想知道哪个现有的Lodash方法用于获取一个键和一个对象数组,然后返回一个新对象,该对象只包含与传入的键匹配的属性(来自原始对象)。

let _ = require("lodash");

// DOES THE FUNCTION BELOW ALREADY EXIST?
let only = function (wanted, srcList) {
  return _.reduce(wanted, function(out,key){
    if(_.has(srcList, key)){
      out[key] = srcList[key]
    }
    return out;
  },{})
}


let src = {
  w: "This is doble vuu",
  x: "This is X",
  y: "This is why?",
  z: "This is zeee!"
};

var want = ['x','z'];

let newObject  = only(want,src);

console.log(newObject)

我的代码有效,但我不想重新发明众所周知的轮子,无论它多么简单。

2 个答案:

答案 0 :(得分:1)

我相信你想要_.map。

如果传递一个字符串数组作为第二个参数,它将返回一个具有指定键的对象。

答案 1 :(得分:0)

_.pick完全按照Gruff Bunny在评论中的建议。当我在Lodash中使用了几十种方法时,我不知道为什么它看起来不那么明显