@exians

Как укоротить синстаксис деструктуризации?

Привет, можно ли укоротить этот синтаксис?

let {
        customer,
        tool_type,
        tool_brand,
        tool_model,
        tool_serial_code,
        defect_type,
        defect_description,
        request_type,
        request_description,
        status
      } = this

      let payload = {
        data: {
          customer,
          tool_type,
          tool_brand,
          tool_model,
          tool_serial_code,
          defect_type,
          defect_description,
          request_type,
          request_description,
          status
        }
      }

      console.log(payload)
  • Вопрос задан
  • 176 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
Деструктуризацию долой, сделать массив имён свойств:

const payload = {
  data: Object.fromEntries([
    'раз свойство',
    'два свойство',
    'три свойство',
  ].map(n => [ n, this[n] ])),
};
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
С деструктуризацией неизбежно двойное повторение всех имен свойств — то, чего вы, как я понял, хотите избежать.

Можно вспомогательной функцией:
const pickProps = (object, ...keys) => keys.reduce((acc, c) => ({ ...acc, [c]: object[c] }), {});

использование
let payload = {
  data: pickProps(
    this,
    'customer',
    'tool_type',
    'tool_brand',
    'tool_model',
    'tool_serial_code',
    'defect_type',
    'defect_description',
    'request_type',
    'request_description',
    'status'
  ),
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы