Использование 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
  }, {})
};
Другие вопросы по тегам