我循环遍历一个对象数组并检查每个对象中的id是否包含在键/值对的对象中。如果id包含在键值对中,那么我将该值指定为新的对象属性。
所以,让我说我有一系列对象:
var arrayOfObjects = [
{
id: 1,
name: "bob"
},
{
id: 2,
name: "sue"
}
];
我还有一个键值对的对象:
var keyValuePairs = { 1: "admin", 2: "user" }
我想遍历我的arrayOfObjects,看看id是否在我的keyValuePairs中。如果是这样,我想在我的arrayOfObjects中添加一个新属性,使它看起来像这样:
var arrayOfObjects = [
{
id: 1,
name: "bob",
title: "admin"
},
{
id: 2,
name: "sue",
title: "user"
}
];
我已经尝试了这个,但它没有添加'标题'我的arrayOfObjects的属性。关于如何使用lodash做到这一点的任何想法?
return _.map(arrayOfObjects, function(obj) {
if(obj.id in keyValuePairs)
{
obj.title = keyValuePairs[obj.id];
}
return obj;
});
答案 0 :(得分:0)
通过使用Array#map
迭代数组,您可以轻松地使用lodash或使用lodash等效,并且如果keyValuePairs
中存在值,则将对象和标题分配给新对象:
var arrayOfObjects = [{"id":1,"name":"bob"},{"id":2,"name":"sue"},{"id":3,"name":"dave"}];
var keyValuePairs = { 1: "admin", 2: "user" }
var result = arrayOfObjects.map(function(o) {
return keyValuePairs[o.id] ? Object.assign({}, o, { title: keyValuePairs[o.id] }) : o;
});
console.log(result);