对于我的情况,我需要将元素推送到包含对象的地址数组。我正在使用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]
我几乎确定可以通过一些映射/归约组合以最漂亮的方式完成此操作,但是我不知道该怎么做。
任何帮助将不胜感激。 谢谢!
答案 0 :(得分:1)
如果要将联系人变量中的所有地址组合为地址变量:
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)
})