javascript - 动态更新对象数组中的键
问题描述
我将如何动态更新对象数组中的键?
我有以下称为标题的字符串数组:
headers = ['col1', 'col2', 'col3', 'col4']
我有一个名为 rows 的对象数组:
const rows = [
{
column1: 'value1',
column2: 'value2',
column3: 'value3',
column4: 'value4'
},
{
column1: 'value5',
column2: 'value6',
column3: 'value7',
column4: 'value8'
}
];
我想更新行内的键,使其与动态完成的标题的值匹配,而无需对其进行硬编码。
预期输出为字符串数组:
{
col1: 'value1',
col2: 'value2',
col3: 'value3',
col4: 'value4'
},
{
col1: 'value5',
col2: 'value6',
col3: 'value7',
col4: 'value8'
}
解决方案
如果您无法理解任何部分,请告诉我
function convertKeys(array , newKeys){
return array.map(row=>{
return Object.fromEntries(Object.entries(row).map((x,i)=> {
x[0] =headers[i]
return x
}))
})
}
convertKeys(rows,headers)
或者您可以使用类似这样的东西,而不是依赖订单
let newKeys = [
["column1", "col1"],
["column2", "col2"],
["column3", "col3"],
["column4", "col4"],
]
function convertKeys(array , newKeys){
array.forEach(obj=>{
for (let i = 0 ; i < newKeys.length ; i++){
let [oldKey,newKey] = newKeys[i]
if(obj.hasOwnProperty(oldKey)){
obj[newKey] = obj[oldKey]
delete obj[oldKey]
}
}
})
return array
}
convertKeys(rows,newKeys)
推荐阅读
- amazon-web-services - CloudFormation 条件惰性求值
- javascript - 为什么我的数据以随机顺序返回,我该如何正确处理?
- swift - 如何在 Swift 中使用并行性来扩展随机模拟?
- xcode - Safari 扩展无效的代码签名标识符
- reactjs - react-beautiful-dnd 第二次下单时报错
- azure - 如何将数据框中的行数写入 JSON 文件?
- bluetooth-lowenergy - iBeacon 可以用于广播传感器门的打开/关闭吗?
- javascript - 如何操作从 ajax 调用接收到的数组数据
- java - 如何修复netbeans中的java语言级别错误
- javascript - 在功能组件中没有得到我期望的变量的原因是什么?