javascript - 从另一个对象编辑数组对象中的键名
问题描述
我希望能够重命名对象数组中的键。我知道如何手动进行,一项一项。但我想做的是从另一个对象重命名键。
我的数据:
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 中的键重命名data
键obj
。
我可以用一个值来做到这一点,例如:
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'},
];
解决方案
如果你反向obj
,它会更容易。然后,您可以使用Object.entries
和Object.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);
推荐阅读
- api - Google Play 控制台 REST API 获取订阅详情
- heroku - 如何完全禁用/删除heroku worker的默认时间触发器?
- python - 用户输入后不知道如何从字典中打印单词
- elasticsearch - 找不到任何实现 Connector 且名称与 io.confluent.connect.elasticsearch 匹配的类。独立运行时
- javascript - 在所有情况下都需要执行状态为 true 的玩家的回合转换
- python - 查找2个轮廓的交点坐标
- python - Python - 从字符串中提取用连字符分隔的数字
- r - GG plot 图例堆叠所有形状/从图例中删除一项
- android - 在模块中发现多个重复类
- reactjs - 在 Netlify 中为 React 应用添加 ENV var 的问题