javascript - 解构对象数组 (es6)

标签 javascript arrays object ecmascript-6 destructuring

我想知道如何解构对象数组。我正在尝试从 partner 数组中解构 country 。项目要求合作伙伴是对象的数组,即使每个对象只能有一个合作伙伴国家/地区。

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"}]
   }
]

我能够使用除合作伙伴之外的所有字段的数据填充表格。

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 ,看起来如果不先转换数据就不可能做到这一点。

任何帮助将不胜感激(并对骗子表示歉意)。

最佳答案

当你想处理partner为空数组的情况时,你可以简单地使用默认值,

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)


话虽这么说,我们应该尽可能保持代码的可读性,但在这里它变得很难看,而不是试图保存额外的一行,我们应该选择使其更具可读性

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)

关于javascript - 解构对象数组 (es6),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58509981/

相关文章:

javascript - 从对象数组中收集键并将其缩减为单个数组并删除重复项

c - 迭代字符数组,同时跳过空格

javascript - 如何将 TypeScript 对象转换为普通对象?

javascript - Flask cookie 没有 SameSite 属性

Java数组改变一半的值等

javascript - 循环并显示对象内的内容

javascript - 比较两个对象数组并删除第二个对象中具有相同属性值的项目

javascript - 基于 promise 的操作成功,数据得到解决,但我收到一条错误消息

javascript - 如何在 Node js 中对下载流进行哈希处理

python - 为什么相同的 "inputs"会得到两个不同的结果