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

JavaScript如何基于原数组提取指定字段生成新数组?

数组清洗实现方案

核心实现思路:先定义需要保留的字段白名单,通过双层for循环遍历原始数组和白名单字段,仅提取目标字段即可,不受原始对象额外字段的影响。

代码实现

首先定义保留字段常量:

// 定义需要保留的字段白名单
const ALLOWED_FIELDS = ['Cpf', 'Nascimento', 'Sexo', 'Id', 'Nome', 'Ativo', 'Criacao', 'UltimaAlteracao', 'Email', 'Observacoes', 'Endereco']

for循环版本的清洗函数:

function cleanSelectedData(rawSelectedArray) {
  const result = []
  // 遍历原始选中数组的每一项
  for (let i = 0; i < rawSelectedArray.length; i++) {
    const rawItem = rawSelectedArray[i]
    const cleanedItem = {}
    // 仅提取白名单内的字段
    for (let k = 0; k < ALLOWED_FIELDS.length; k++) {
      const field = ALLOWED_FIELDS[k]
      cleanedItem[field] = rawItem[field]
    }
    result.push(cleanedItem)
  }
  return result
}

使用说明

每次选中/取消复选框更新完原始选中数组后,调用cleanSelectedData函数传入原始数组,返回的结果就是仅包含目标字段的清洗后数组,可直接用于CSV导出。
如果后续需要调整保留的字段,仅需修改ALLOWED_FIELDS数组即可,无需改动核心逻辑。

CSV导出适配补充

因为Endereco是嵌套对象,直接导出CSV会出现结构异常,如果你需要把地址字段展开为平级字段,可以修改清洗逻辑如下:

// 调整后的白名单,包含地址下的字段
const ALLOWED_FIELDS = ['Cpf', 'Nascimento', 'Sexo', 'Id', 'Nome', 'Ativo', 'Criacao', 'UltimaAlteracao', 'Email', 'Observacoes', 'Cep', 'Logradouro', 'Numero', 'Complemento', 'Bairro', 'Estado', 'Cidade']

function cleanSelectedData(rawSelectedArray) {
  const result = []
  const addressFields = ['Cep', 'Logradouro', 'Numero', 'Complemento', 'Bairro', 'Estado', 'Cidade']
  for (let i = 0; i < rawSelectedArray.length; i++) {
    const rawItem = rawSelectedArray[i]
    const cleanedItem = {}
    for (let k = 0; k < ALLOWED_FIELDS.length; k++) {
      const field = ALLOWED_FIELDS[k]
      if (addressFields.includes(field)) {
        cleanedItem[field] = rawItem.Endereco?.[field] ?? null
      } else {
        cleanedItem[field] = rawItem[field]
      }
    }
    result.push(cleanedItem)
  }
  return result
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:39:02