2016-12-06 128 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

此輸出沒有問題通緝。 –