【问题标题】:Combine items after mapping from an array to a single object [duplicate]从数组映射到单个对象后组合项目[重复]
【发布时间】:2020-12-26 18:33:47
【问题描述】:

你能帮我从对象数组中创建对象吗?

要转换的数组 arr = [{name:'Ryan'}, {surname:'raynold'}]

要求的输出 finalObj = {name:ryan, surname:raynold}

我试图通过做得到结果

让 objectArr = Object.assign({}, arr);

但结果是这样的

{ 0:{肩膀:“14”},1:{脖子:“”}}

【问题讨论】:

  • 这里有什么问题?
  • 数组有两个元素,需要将它们组合成一个对象。
  • 请访问help center,使用tour查看内容和How to Ask。做一些研究,搜索关于 SO 的相关主题;如果您遇到困难,请发布您的尝试minimal reproducible example,并使用[<>] sn-p 编辑器记录输入和预期输出。
  • 谢谢,下次我会这样做的。

标签: javascript


【解决方案1】:

这是Object.assign 的好案例。

let arr = [{name:'Ryan'}, {surname:'raynold'}]

let finalObj = Object.assign({}, ...arr);

console.log(finalObj);

Object.assign 可以将多个对象作为参数,因此您可以从输入数组中传播这些对象。第一个参数表示合并其他参数的对象。

【讨论】:

  • 不错的一个!!!这确实是 Object.assign 的好案例!
  • 非常感谢,我没有传播 arr 这就是为什么我没有得到所需的结果。
  • 如果第二个对象有嵌套对象怎么办?让 arr = [ { name:'Ryan' } , { surname: {middleName: 'Robins' }, {lastName: 'Raynolds' } } ] 我如何获得 { name: 'Ryan' , middleName: 'Robins 的对象' , lastName: '雷诺兹' }
  • 然后您必须在嵌套级别拾取条目(循环遍历它们)。如果您无法使其正常工作,并且找不到类似的问题,请随时提出新问题。
【解决方案2】:

你可以用这样的数组 reduce 来做到这一点:

let finalObj = arr.reduce((acc, cur) => ({...acc, ...cur}), {})

【讨论】:

  • 谢谢,@trincot 的回答成功了,不过我也会试试你的。
猜你喜欢
  • 1970-01-01
  • 2019-08-25
  • 1970-01-01
  • 1970-01-01
  • 2019-02-19
  • 2021-09-15
  • 2018-12-04
  • 1970-01-01
  • 2021-04-18
相关资源
最近更新 更多