来自一个对象的 lodash 映射键与对象数组中的值

lodash Mapping Keys from one object with values in array of objects

我有以下对象:

var kmap={
    key1:"useless",
    key2:"useless",
    key3:"useless"
};

我需要将它的键映射到这个对象数组的值:

var incoming=[
    {value:"asd"},
    {value:"qwe"},
    {value:"zxc"}
];

结果:

{
    key1:"asd",
    key2:"qwe",
    key3:"zxc",
}

这是我现在的做法:

var result={};

var keys=Object.keys(kmap);

for(var i=0;i<incoming.length;i++)
{
    result[keys[i]]=incoming[i].value;
}

如何使用 lodashunderscore 进行操作。内置方法会更好,不想做 for 循环。

您可以将它们与以下功能结合使用:

var kmap={
    key1:"useless",
    key2:"useless",
    key3:"useless"
   
};

var incoming=[
    {value:"asd"},
    {value:"qwe"},
    {value:"zxc"}
];

function combine(obj1, obj2, propToTake) {
  return Object.keys(obj1).map(function(key, i) {
    return {
       [key]: obj2[i] ? obj2[i][propToTake] : undefined
    }
  });
}

console.log(combine(kmap, incoming, 'value'));

这是一个使用 lodash 的解决方案:

var result = _.zipObject(_.keys(kmap), _.map(incoming, 'value'))

zipObject 创建一个给定键数组和值数组的对象。我们从 kmap 获得的键和从 incoming.

中提取的值

var kmap={
    key1:"useless",
    key2:"useless",
    key3:"useless"
};

var incoming=[
    {value:"asd"},
    {value:"qwe"},
    {value:"zxc"}
];

var result = _.zipObject(_.keys(kmap), _.map(incoming, 'value'))

document.getElementById('result').textContent = JSON.stringify(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.15.0/lodash.min.js"></script>

<p>
  <pre id="result"></pre>
</p>