首页 > 解决方案 > 动态更新对象数组中的键

问题描述

我将如何动态更新对象数组中的键?

我有以下称为标题的字符串数组:

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'
}

标签: javascriptarraysobject

解决方案


如果您无法理解任何部分,请告诉我

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)


推荐阅读