来自一个对象的 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;
}
如何使用 lodash
或 underscore
进行操作。内置方法会更好,不想做 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>
我有以下对象:
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;
}
如何使用 lodash
或 underscore
进行操作。内置方法会更好,不想做 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>