如何从两个对象中获取相应的值

时间:2018-04-07 18:34:28

标签: javascript lodash

我有第一个数据对象,它有一个cafe列表,第二个数据对象有一个cafe类型列表。

我需要查找,获取并显示第一个数据对象的相应类型值和第二个数据对象的 ID 值。

例如:在咖啡馆列表中,我有 Pinta "type" : "3",这意味着 3 Bar 对象

第一个对象:

{
  "list": {
      "item": [
          {
              "ID": "31",
              "name": "Staut",
              "type": "1",
          },
          {
              "ID": "34",
              "name": "Pinta",
              "type": "3",
          }
      ]
   }
}

第二个目标:

{
  "list": {
      "item": [
          {
              "ID": "1",
              "name": "Restaurant",
          },
          {
              "ID": "2",
              "name": "Cafe",
          },
          {
              "ID": "3",
              "name": "Bar",
          }
      ]
   }
}

我可以用 Lodash 来做。它是对的,但是我无法显示它并使用高内存。

getValues: function() {
  _.forEach(CafeJSON.list.item, function(cafeValue) {
    _.forEach(TypeJSON.list.item, function(typeValue){
      if (cafeValue.type == typeValue.ID) {
        console.log("Cafe name is: ", cafeValue.name, "and type is: ", typeValue.name)
      }
    })
  })
}

结果

enter image description here

1 个答案:

答案 0 :(得分:1)

我将类型对象简化为具有'3': 'Bar'形式的键值对的对象,然后循环这些项,覆盖type属性的值。

let list = {
  "list": {
    "item": [{
        "ID": "31",
        "name": "Staut",
        "type": "1",
      },
      {
        "ID": "34",
        "name": "Pinta",
        "type": "3",
      }
    ]
  }
}

let types = {
  "list": {
    "item": [{
        "ID": "1",
        "name": "Restaurant",
      },
      {
        "ID": "2",
        "name": "Cafe",
      },
      {
        "ID": "3",
        "name": "Bar",
      }
    ]
  }
}

let typesSimplified = types.list.item.reduce((a, b) => {
  a[b.ID] = b.name;
  return a;
}, {});

list.list.item.forEach(e => {
  e.type = typesSimplified[e.type];
});

console.log(list);