解构对象数组 (es6)
Destructuring an array of objects (es6)
我想知道如何解构对象数组。我正在尝试从 partner
数组中解构 country
。项目要求 partner
是对象的 数组 ,即使每个对象只能有一个伙伴国家。
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
以外的所有字段的数据填充 table。
arr.map(
({ title, desc, role: {role_name}, partner: [{country}] }) =>
({ title, desc, role: {role_name}, partner: [{country}] })
);
我已经提到了 and ,看起来如果不先转换数据就无法做到这一点。
如有任何帮助,我们将不胜感激(并对受骗者表示歉意)。
由于一个同样简单的错误,我忽略了一个非常简单的答案:
arr.map(
({ title, desc, role: {role_name}, partner}) =>
({ title, desc, role: {role_name}, partner: (partner[0] && partner[0].country) || 'Undefined' })
);
数组中的每一项不一定都有 "country" 属性。对于某些项目,partner
只是一个空数组。以上解决了问题。
我同意将 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)
我想知道如何解构对象数组。我正在尝试从 partner
数组中解构 country
。项目要求 partner
是对象的 数组 ,即使每个对象只能有一个伙伴国家。
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
以外的所有字段的数据填充 table。
arr.map(
({ title, desc, role: {role_name}, partner: [{country}] }) =>
({ title, desc, role: {role_name}, partner: [{country}] })
);
我已经提到了
如有任何帮助,我们将不胜感激(并对受骗者表示歉意)。
由于一个同样简单的错误,我忽略了一个非常简单的答案:
arr.map(
({ title, desc, role: {role_name}, partner}) =>
({ title, desc, role: {role_name}, partner: (partner[0] && partner[0].country) || 'Undefined' })
);
数组中的每一项不一定都有 "country" 属性。对于某些项目,partner
只是一个空数组。以上解决了问题。
我同意将 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)