首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >给定一个对象数组,如何用另一个键名替换键名,同时保留原始键的值?

给定一个对象数组,如何用另一个键名替换键名,同时保留原始键的值?
EN

Stack Overflow用户
提问于 2019-06-01 23:01:55
回答 3查看 54关注 0票数 2

我尝试获取一个对象数组,并且在不改变原始数组的情况下,重命名每个对象中的一个特定键。

我已经创建了一个新的变量,并将其赋值给在原始数组上使用'map‘的结果(以避免突变)。在'map‘方法中,我尝试解构'keyToChange’参数,并将其余的值传递给'newKey‘。

代码语言:javascript
复制
const renameKeys = (array, keyToChange, newKey) => {
  const spreadArray = array.map(({keyToChange: newKey, ...rest}) => ({newKey, ...rest}));
    return spreadArray;
   };

上面的代码返回'newKey: [undefined]',后跟原始的对象数组。

任何帮助都将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-06-01 23:04:10

您需要一个computed property name,而不是一个(未给定的)属性keyToChange

代码语言:javascript
复制
const spreadArray = array.map(({ [keyToChange]: newKey, ...rest }) => ({ newKey, ...rest }));
//                               ^^^^^^^^^^^^^
票数 3
EN

Stack Overflow用户

发布于 2019-06-01 23:09:39

如果要使用动态值作为键,请使用方括号表示法。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_accessors */

代码语言:javascript
复制
 const spreadArray = array.map(({ [keyToChange]: newKey, ...rest}) => ({newKey, ...rest}));
票数 2
EN

Stack Overflow用户

发布于 2019-06-01 23:04:07

如果您希望将一个表达式作为要更改的键,请使用方括号将其括起来[]

代码语言:javascript
复制
const renameKeys = (array, keyToChange, newKey) => {
  const spreadArray = array.map(({[keyToChange]: newKey, ...rest}) => ({newKey, ...rest}));
    return spreadArray;
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56407811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档