Использование join() для массива, вложенного в записи объектов из vuex getter
Я не могу заставить свой vuex getter возвращать ошибки так, как я хочу, чтобы он был структурирован.
Структура моего объекта ошибок выглядит следующим образом:
errors: {
email: ['error message.']
email_confirm: ['error message.', 'another error message.']
}
Структура, я хочу, чтобы это было:
errors: {
email: 'error message',
email_confirm: 'error message. another error message.'
}
Что я уже пробовал:
const getters = {
errors: state => Object.keys(state.errors).map(key => state.errors[key].join(' '))
};
^ Это возвращает объединенные значения объекта ошибки, но без исходного ключа объекта.
Есть идеи, как это можно сделать?:)
2 ответа
Решение
Я не думаю, что это возможно с одной строкой. Вы можете достичь этого следующим образом:
const getters = {
errors: (state) => {
let newErrors = {};
Object.keys(state.errors).map( key => newErrors[key] = state.errors[key].join(' ') )
return newErrors;
}
};
Редуктор должен работать на один лайнер.
const getters = {
errors: state => Object.keys(state.errors).reduce((acc, key) => {
acc[key] = state.errors[key].join(' ')
return acc
}, {})
};