JSFiddle - React, Tailwind, and code Playground
by batcave
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>
JavaScript
const response = {
"success": false,
"errors": [
[{
"companyProfile": [{
"dunsNumber": [{
"message": "'Duns Number' must not be empty.",
"code": "required"
}]
},
{
"registrationNumber": [{
"message": "'Registration Number' must not be empty.",
"code": "required"
}]
},
{
"vatNumber": [{
"message": "'Vat Number' must not be empty.",
"code": "required"
}]
},
{
"eoriNumber": [{
"message": "'Eori Number' must not be empty.",
"code": "required"
}]
}
],
"invoiceAddress": [{
"dunsNumber": [{
"message": "'Duns Number' must not be empty.",
"code": "required"
}]
},
{
"registrationNumber": [{
"message": "'Registration Number' must not be empty.",
"code": "required"
}]
},
{
"vatNumber": [{
"message": "'Vat Number' must not be empty.",
"code": "required"
}]
},
{
"eoriNumber": [{
"message": "'Eori Number' must not be empty.",
"code": "required"
}]
}
]
}]
]
}
const wantedResult = {
companyProfile: {
firstName: ['isRequiredMessage'],
email: ['isRequiredMessage', 'isNotValidEmailMessage']
}
}
function objectErrors(arr) {
return _.reduce(arr, (acc, value, key) => {
console.log(key)
console.log(value)
return acc
})
}
const errors = _.forEach(response.errors[0], (section) => {
return _.reduce(section, (acc, value, key) => {
acc[key] = {
}
objectErrors(value)
console.log('value: ', value)
return acc
}, {})
})
console.log(errors)