【问题标题】:How to combine two objects with same key name in JavaScript? [closed]如何在 JavaScript 中组合两个具有相同键名的对象? [关闭]
【发布时间】:2020-10-18 22:18:04
【问题描述】:

在我的 react 应用程序中,我目前有两个数组,其中包含我想要组合的对象。

  const cars = [ 
    {'car': 'porsche', 'description': 'luxury', 'driverId': 4},
    {'car': 'ferrari', 'description': 'beatiful', 'driverId': 2},
    {'car': 'bmw', 'description': 'slow', 'driverId': 5} 
    ]

  const drivers = [
    {'driver':{'car': 'kia', 'name':'John' , 'description': 'Overweight'}},
    {'driver':{'car': 'toyota', 'name':'Koko' , 'description': 'Ugly looking'}},
    {'driver':{'car': 'nissan', 'name':'Goku' , 'description': 'Tall'}}
    ]

组合两个对象后,我希望最终结果是这样的。

   const carInfo = [
    {'car': 'porsche', 'description': 'luxury', 'driverId': 4, 'carName':'kia', 'name':'John' , 'descriptionDriver': 'Overweight'},
    {'car': 'ferrari', 'description': 'beatiful', 'driverId': 2, 'carName': 'toyota', 'name':'Koko' , 'descriptionDriver': 'Ugly looking'},
    {'car': 'bmw', 'description': 'slow', 'driverId': 5, 'carName': 'nissan', 'name':'Goku' , 'descriptionDriver': 'Tall'}
    ]

基本上,我想更改驱动程序对象中的键名,然后将它们组合起来。因为当对象之间存在相同的键名时,扩展运算符将不起作用。我怎样才能得到这个结果?

【问题讨论】:

  • 两个数组是否总是保证长度相同?如果不是,应该怎么办?
  • 为什么不将每个 driver 对象插入到键 driver 下?那么你就不用担心对象键冲突了

标签: javascript array-merge


【解决方案1】:

当然你可以使用扩展运算符,只需映射它并“重命名”一些道具:

drivers.map(x => x.driver).map((x, i) => {
  let { car, description, ...rest } = x
  return { ...rest, carName: car, descriptionDriver: description, ...cars[i] }
})

【讨论】:

  • 谢谢你,结果很好!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-21
  • 2017-09-28
相关资源
最近更新 更多