You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何动态更新对象数组的键,使其匹配headers字符串数组的对应取值

动态更新对象数组键名的实现方法

核心实现逻辑是遍历rows数组的每一项,将对象值与headers数组的键名按顺序配对,生成新的对象即可,无需硬编码键名。

基础实现方案

适用于原有对象键(column1~column4)按固定顺序定义的场景:

const headers = ['col1', 'col2', 'col3', 'col4']
const rows = [
{
  column1: 'value1',
  column2: 'value2',
  column3: 'value3',
  column4: 'value4'
}, 
{
  column1: 'value5',
  column2: 'value6',
  column3: 'value7',
  column4: 'value8'
}
];

const result = rows.map(row => {
  // 按顺序取出当前行所有属性值
  const rowValues = Object.values(row);
  // 配对headers的新键名生成新对象
  return headers.reduce((newRow, key, index) => {
    newRow[key] = rowValues[index];
    return newRow;
  }, {});
});

console.log(result) // 输出即为你需要的结果

兼容键顺序不确定的方案

如果原有对象的键排列顺序可能混乱,可以先对键按数字后缀排序后再取值:

const result = rows.map(row => {
  // 对原有键按后缀数字排序,保证取值顺序为column1 -> column2 -> column3 -> column4
  const sortedOldKeys = Object.keys(row).sort((a, b) => {
    return Number(a.replace('column', '')) - Number(b.replace('column', ''))
  });
  const rowValues = sortedOldKeys.map(key => row[key]);
  return headers.reduce((newRow, key, index) => {
    newRow[key] = rowValues[index];
    return newRow;
  }, {});
});

内容的提问来源于stack exchange,提问作者Milan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 13:15:03