lodash:循环浏览对象数组,并与键/值进行比较



我正在通过一系列对象进行循环,并检查每个对象中的ID是否包含在键/值对的对象中。如果ID包含在密钥值对中,则我将值分配为新对象属性。

所以说我有一系列对象:

var arrayOfObjects = [
  {
    id: 1,
    name: "bob"
  },
 {
    id: 2,
    name: "sue"
  }
];

,我也有一个钥匙值对的对象:

var keyValuePairs = { 1: "admin", 2: "user" }

我想循环遍历我的arrayofObjects,然后查看ID是否在我的键盘上。如果是这样,我想在我的arrayofobject中添加一个新属性,以使其看起来像这样:

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;
 });

您可以在没有lodash或使用lodash等效的情况下轻松地通过使用Array#map迭代数组来轻松,如果在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);

最新更新