首页 > 解决方案 > 尝试在 2 var obj 之间迭代并合并它们

问题描述

我有:

const dictionary  = [
  {
    "state": "AK",
    "lat": "9875.33.00",
    "long": "-8371.42.00",
    "name": "Alaska"
  },
  {
    "state": "AL",
    "lat": "5335.51.00",
    "long": "-15124.18.00",
    "name": "Alabama"
  }
];

const data = [
  {
    "date": 20200421,
    "state": "AK",
  },
  {
    "date": 20200421,
    "state": "AL",
  }
];

const result = data.map(item => ({...item, lat: dictionary[item.state].lat, long: dictionary[item.state].long }))
console.log(result);

基本上尝试将dictionary每个data状态匹配的对象添加为 obj,但我有:

Cannot read property 'lat' of undefined

期待:

const result = [
  {
    "date": 20200421,
    "state": "AK",
    "lat": "9875.33.00",
    "long": "-8371.42.00",
  },
  {
    "date": 20200421,
    "state": "AL",
    "lat": "5335.51.00",
    "long": "-15124.18.00",
  }
];

我正在尝试小提琴

标签: javascript

解决方案


您不能将数组项作为一个完整数组来访问。你必须隔离你想要的 obj。用这个。

    const result = data.map(function(item) {
  const ditem = dictionary.find(d => d.state == item.state);
  if(ditem) {
  return {
    ...item,
    "lat": ditem.lat ,
    "long": ditem.long
  } 
  }
  return item;

});

console.log(result);

推荐阅读