JavaScript: динамическая деструктура объекта с помощью вычисляемых ключей - PullRequest
2 голосов
/ 20 марта 2019

Я пытаюсь написать карри для функции disoc, которая принимает реквизит и объект и удаляет ключ и его значение из объекта.

Вот код, который работает:

const dissoc = prop => obj => {
  const result = {};
  for (let p in obj) {
    result[p] = obj[p];
  }
  delete result[prop];
  return result;
};

Теперь я подумал, что это можно написать более кратко, используя вычисленные свойства , деструктуризацию и оператор остатка:

const dissoc = prop => ({ [prop], ...obj}) => obj

Но этот код выдает:

Uncaught SyntaxError: Unexpected token ,

Итак, я попытался:

const dissoc = prop => ({ prop, ...obj}) => obj

, который вычисляет, но просто возвращает объект без подпорки.

Есть ли способ динамически деструктурировать и / или упростить этот код

1 Ответ

6 голосов
/ 20 марта 2019

Вам нужна целевая переменная, например, подчеркивание как знак для неиспользуемой переменной / заполнителя.

const dissoc = prop => ({ [prop]: _, ...obj}) => obj

В Javascript нет концепции использования переменных переменных, например PHP с $$variable, гдезначение $variable принимается за переменную.В этом случае вам понадобится другая переменная, поскольку из имени вычисляемого свойства и без реальной переменной она не работает.

Возможно, стоит прочитать: Шаблон назначения свойств объекта[YDKJS: ES6 и далее]

...