I've got working code for creating an object on the fly:
// dummy sources
const departments = [
{ code: 'DA', title: 'Department A' },
{ code: 'DB', title: 'Department B' },
{ code: 'DC', title: 'Department C' },
{ code: 'DD', title: 'Department D' },
]
const reviewers = ['Department A','Pub Lunches','Department C','Department D']
const validationObject = {}
// actual code
reviewers.forEach( (reviewer, index) => {
const dept = departments.find( dept => dept.title === reviewer) || { code: reviewer.replace(/[ ]/g, '_').replace(/[/W]/g, '') }
validationObject[dept.code.toLowerCase()+'_reviewer'] = {blah:'blah'}
})
console.log(validationObject)
It works, but the creating a dummy object just to defeat the error when grabbing the code
element of an undefined result (when there's no matching element in departments) looks awkward.
Is there a more idiomatic way of doing this that I'm missing?
In ES6 should be something like this
const dept = {
code: reviewer.replace(/[ ]/g, '_').replace(/[/W]/g, ''),
...departments.find( dept => dept.title === reviewer)
}