首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分解对象数组(es6)

分解对象数组(es6)
EN

Stack Overflow用户
提问于 2019-10-22 18:03:13
回答 2查看 1K关注 0票数 2

我想知道如何构造一个对象数组。我正在尝试从country数组中构造partner。项目要求partner是一个对象数组,即使每个obj只应该有一个合作伙伴国家。

代码语言:javascript
复制
arr = [
   { title: "Title A",
     desc: "Desc A",
     role: {role_desc: "Role Desc A", role_name: "Role A"},
     partner: [{country: "Brazil", region: "SA"}]
   },
   { title: "Title B",
     desc: "Desc B",
     role: {role_desc: "Role Desc B", role_name: "Role B"},
     partner: [{country: "US", region: "NA"}]
   }
]

我能够为除partner之外的所有字段填充数据表。

代码语言:javascript
复制
arr.map(
  ({ title, desc, role: {role_name}, partner: [{country}] }) => 
  ({ title, desc, role: {role_name}, partner: [{country}] })
);

我已经提到了Destructure object properties inside array for all elementsDestructuring an array of objects with es6,如果不首先转换数据,就不可能做到这一点。

如有任何帮助,我们将不胜感激(并对此表示歉意)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-22 18:40:25

由于一个同样简单的错误,我忽略了一个非常简单的答案:

代码语言:javascript
复制
arr.map(
  ({ title, desc, role: {role_name}, partner}) => 
  ({ title, desc, role: {role_name}, partner: (partner[0] && partner[0].country) || 'Undefined' })
);

数组中的每个项都不一定具有"country“属性。对于某些项,partner只是一个空数组。上述情况解决了这个问题。

我同意,如果partner只包含一个对象,那么使它成为数组是没有意义的。然而,客户需求。

票数 1
EN

Stack Overflow用户

发布于 2019-10-22 18:51:59

当合作伙伴为空数组时,您只需使用默认值来处理该情况,

代码语言:javascript
复制
const arr = [{ title: "Title A",desc: "Desc A",role: {role_desc: "Role Desc A", role_name: "Role A"},partner: [{country: "Brazil", region: "SA"}]},{ title: "Title B",desc: "Desc B",role: {role_desc: "Role Desc B", role_name: "Role B"},partner: [{country: "US", region: "NA"}]},{ title: "Title C",desc: "Desc C",role: {role_desc: "Role Desc C", role_name: "Role C"},partner: []}]

const final = arr.map(
  ({ title, desc, role: {role_name}, partner}) => 
  ({ title, desc, role: {role_name}, partner:[ {country} = {country: undefined } ] })
);

console.log(final)

尽管如此,我们应该尽可能地保持代码的可读性,在这里,它变得非常困难,而不是试图多保留一行,我们应该选择让它更易读。

代码语言:javascript
复制
const arr = [{ title: "Title A",desc: "Desc A",role: {role_desc: "Role Desc A", role_name: "Role A"},partner: [{country: "Brazil", region: "SA"}]},{ title: "Title B",desc: "Desc B",role: {role_desc: "Role Desc B", role_name: "Role B"},partner: [{country: "US", region: "NA"}]},{ title: "Title C",desc: "Desc C",role: {role_desc: "Role Desc C", role_name: "Role C"},partner: []}]

const final = arr.map(
  ({ title, desc, role: {role_name}, partner}) => {
     let country = partner[0] && partner[0].country || undefined
    return { title, desc, role: {role_name}, partner:[ {country}] }
  }
);

console.log(final)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58509981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档