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

JS中基于对象动态字段生成统一数组及表格列的实现需求

从动态对象数组提取所有唯一字段生成表格列数组

给定一组字段结构不统一的对象数组(如下方示例),需要提取所有出现过的字段名,转成大写后存入名为data的数组。

示例输入

[
  {
    id: 1,
    water: 'water',
  },
  {
    id: 2,
    fire: 'fire',
    earth: 'earth'
  }
]

实现方案

可以通过以下步骤实现:

  • 遍历数组中的每个对象,收集所有字段名
  • 对收集到的字段名去重
  • 将每个字段名转换为大写格式
  • 最终赋值给data数组

代码实现

// 模拟服务器返回的动态数据
const serverResponse = [
  { id: 1, water: 'water' },
  { id: 2, fire: 'fire', earth: 'earth' }
];

function getTableColumns(sourceData) {
  // 收集所有对象的字段名并扁平化数组
  const allFields = sourceData.flatMap(item => Object.keys(item));
  // 去重并转换为大写
  const uniqueUpperFields = [...new Set(allFields)].map(field => field.toUpperCase());
  return uniqueUpperFields;
}

// 生成目标数组
const data = getTableColumns(serverResponse);
console.log(data); // 输出: ["ID", "WATER", "FIRE", "EARTH"]

代码说明

  • flatMap(item => Object.keys(item)):遍历每个对象,用Object.keys获取当前对象的所有字段名,再通过flatMap将多个字段数组合并为一个一维数组
  • new Set(allFields):利用Set的特性自动去除重复的字段名
  • map(field => field.toUpperCase()):将所有字段名统一转换为大写格式
  • 最终返回的数组即为包含所有唯一字段的目标数组data

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 16:46:17