2016-12-06 132 views
2

的followning代码需要两个阵列(fieldsphotos),得到名字和各自领域的价值,并将它们添加到一个新的数组(panoramas):如何合并这两个foreach循环(只用一个)?

功能:

const panoramas = this.uploads.finished.map(photos => { 
    let panorama = {} 
    fields.forEach(field => { panorama[field.name] = field.value }) 
    photos.forEach(photo => { panorama[photo.name] = photo.value }) 
    return panorama 
}) 

输入:

fields

[{ 
    name: "name" 
    type: "hidden" 
    value: "" 
}, { 
    name: "description" 
    type: "hidden" 
    value: "" 
}, { 
    name: "photo" 
    type: "file" 
    value: "" 
}, { 
    name: "photo2" 
    type: "file" 
    value: "" 
}] 

photos

[{ 
    name: "photo" 
    value: "1.png" 
}, { 
    name: "photo2" 
    value: "2.jpg" 
}] 

输出:

panoramas:

[{ 
    name: "name" 
    type: "hidden" 
    value: "" 
}, { 
    name: "description" 
    type: "hidden" 
    value: "" 
}, { 
    name: "photo" 
    type: "file" 
    value: "1.png" 
}, { 
    name: "photo2" 
    type: "file" 
    value: "2.png" 
}] 

正如你可以看到我使用的是内部map 2个forEach循环。有没有办法只使用一个forEach的方法吗?

回答

3
fields.concat(photos).forEach(obj => { panorama[obj.name] = obj.value }); 
+0

Yo're个天才! (也许我太笨了。) – alex

+0

高度怀疑两者断言XD。 –

+0

此输出没有问题通缉。 –