В этом случае мне нужно отформатировать список адресов электронной почты в JSON
, и обе функции map
и reduce
выполняют свою работу, но я запутался, какую из них использовать, или есть какие-нибудь альтернативы?
Input
const emailList = `
Last name, First name <email@email.com>;
Last name, First name <email@email.com>;
Last name, First name <email@email.com>;
Last name, First name <email@email.com>;
`
Использование карты
let formatedList =
emailList.trim()
.split(';')
.map(record => {
let recordObj = {}
const [lastname, firstname, email] = record.split(/\,|\</g).map(r => r.trim())
recordObj['firstname'] = firstname
recordObj['lastname'] = lastname
recordObj['email'] = email
return recordObj
})
Использование Reduce
let formatedList =
emailList.trim()
.split(';')
.reduce((usersObj, record) => {
let formatedUser = {}
let [lastname, firstname, email] = record.split(/\,|\</g).map(r => r.trim())
formatedUser['firstname'] = firstname
formatedUser['lastname'] = lastname
formatedUser['email'] = email
usersObj.push(formatedUser)
return usersObj;
}, [])
выход
[
{
"firstname": "First name",
"lastname": "Last name",
"email": "email@email.com>"
},
{
"firstname": "First name",
"lastname": "Last name",
"email": "email@email.com>"
},
...
]