首页 > 解决方案 > 从另一个对象编辑数组对象中的键名

问题描述

我希望能够重命名对象数组中的键。我知道如何手动进行,一项一项。但我想做的是从另一个对象重命名键。

我的数据:

let data = [
    {f_name: 'Harry', l_name: 'Potter', address: 'Godrics Hollow', colors:'red'},
    {f_name: 'Ron', l_name: 'Weasley', address: 'The Burrow', colors:'orange'},
    {f_name: 'Hermione', l_name: 'Granger', address: '123 London', colors: 'blue'},
];

我的对象看起来像:

let obj = {'first_name': 'f_name', 'last_name': 'l_name', 'home': 'address'};

如您所见,中的值obj与中的键匹配data

我希望能够用 .in 中的键重命名dataobj

我可以用一个值来做到这一点,例如:

let colorName = 'colors';
const rename = data.map(d => {
    return ({colorName: d[colorName]});
});

我不确定如何使用obj.

我如何让我的决赛data看起来像:

data = [
    {first_name: 'Harry', last_name: 'Potter', home: 'Godrics Hollow', colorName:'red'},
    {first_name: 'Ron', last_name: 'Weasley', home: 'The Burrow', colorName:'orange'},
    {first_name: 'Hermione', last_name: 'Granger', home: '123 London', colorName: 'blue'},
];

标签: javascriptjqueryarraysobjectecmascript-6

解决方案


如果你反向obj,它会更容易。然后,您可以使用Object.entriesObject.fromEntries替换密钥:

const data = [
    {f_name: 'Harry', l_name: 'Potter', address: 'Godrics Hollow', colors:'red'},
    {f_name: 'Ron', l_name: 'Weasley', address: 'The Burrow', colors:'orange'},
    {f_name: 'Hermione', l_name: 'Granger', address: '123 London', colors: 'blue'},
  ],
  obj = {'f_name': 'first_name', 'l_name': 'last_name', 'address': 'home'};
  
const result = data.map(d => Object.fromEntries(
    Object.entries(d).map(([k, v]) => [obj[k] || k, v])
));

console.log(result);


推荐阅读