![](/img/trans.png)
[英]How to map array of objects, mapping their keys without nested loops?
[英]How to array map instead of nested for loops
对于我的场景,我需要将元素推送到包含对象的地址数组。 我正在使用 vue.js。
我目前的工作职能是:
propagateCustomerInfo(selectedOption, id){
// Propagate addresses
this.addresses = selectedOption.addresses
// Propagate contact's addresses
for (var i = selectedOption.contacts.length - 1; i >= 0; i--) {
for (var j = selectedOption.contacts[i].addresses.length - 1; j >= 0; j--) {
let address = selectedOption.contacts[i].addresses[j]
address.contact = selectedOption.contacts[i]
this.addresses.push(address)
}
}
},
selectedOption
对象具有以下结构:
{
addresses: [
{
id: 0,
street: 'My street'
},
{...}
],
contacts: [
{
id: 0,
name: 'Lorem Ipsum',
addresses: [
{
id: 0,
street: 'My street'
},
{...}
],
}
]
}
除了将每个联系人的地址对象推送到this.addresses
数组之外,我还需要将联系人附加到地址本身以进行多选渲染。 这就是为什么我在做address.contact = selectedOption.contacts[i]
我几乎可以肯定,这可以通过一些映射/减少组合以最漂亮的方式完成,但我不知道如何去做。
任何帮助将不胜感激。 谢谢!
如果要将联系人变量中的所有地址组合到地址变量:
this.contacts.map(contact => this.addresses.push(...contact.addresses))
编辑。
注入contact.id和contact.name:
this.contacts.map(contact => {
let temp = []
contact.addresses.map(address => {
temp.push({
name: contact.name,
id: contact.id,
...address
})
})
this.addresses.push(...temp)
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.