Учитывая массив объектов, как я могу заменить имя ключа другим, сохраняя значение исходного ключа? - PullRequest
2 голосов
/ 01 июня 2019

Я пытаюсь взять массив объектов и, не изменяя исходный массив, переименовать определенный ключ в каждом объекте.

Я создал новую переменную и присвоил ее результату использования 'map' в моем исходном массиве (чтобы избежать мутации). В методе map я пытался деконструировать параметр keyToChange и распространять остальные значения в newKey.

const renameKeys = (array, keyToChange, newKey) => {
  const spreadArray = array.map(({keyToChange: newKey, ...rest}) => ({newKey, ...rest}));
    return spreadArray;
   };

Код выше возвращается 'newKey: [undefined]', за которым следует исходный массив объектов.

Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

3 голосов
/ 01 июня 2019

Вам необходимо вычисляемое имя свойства вместо (не указано) свойства keyToChange.

const spreadArray = array.map(({ [keyToChange]: newKey, ...rest }) => ({ newKey, ...rest }));
//                               ^^^^^^^^^^^^^
2 голосов
/ 01 июня 2019

Используйте обозначение в квадратных скобках, если вы хотите использовать динамическое значение в качестве ключа.https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_accessors * /

 const spreadArray = array.map(({ [keyToChange]: newKey, ...rest}) => ({newKey, ...rest}));
1 голос
/ 01 июня 2019

Если вы хотите, чтобы выражение было ключом для изменения, используйте квадратные скобки вокруг него []

const renameKeys = (array, keyToChange, newKey) => {
  const spreadArray = array.map(({[keyToChange]: newKey, ...rest}) => ({newKey, ...rest}));
    return spreadArray;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...