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

动态修改对象:根据子项数量扩展文件上传对象结构

动态扩展文件类别对象的实现方法

方法一:基础循环法

逻辑直观,适合快速理解实现思路:

// 初始化文件对象,避免直接修改原始数据
const files = {
    BIRTH_CERTIFICATE: values.files.BIRTH_CERTIFICATE,
    RESUME: values.files.RESUME,
};

// 根据子项数量循环添加对应属性
for (let i = 1; i <= childrenCount; i++) {
    const key = `CHILDREN_BIRTH_CERTIFICATE_${i}`;
    // 可选:若需处理values.files中无对应键的情况,可添加判断
    // if (values.files.hasOwnProperty(key)) {
        files[key] = values.files[key];
    // }
}

方法二:用Object.fromEntries简化代码

借助数组与对象转换的API,让代码更简洁紧凑:

// 生成动态子项证书的键值对对象
const childrenCertificates = Object.fromEntries(
    Array.from({ length: childrenCount }, (_, index) => {
        const seq = index + 1;
        const key = `CHILDREN_BIRTH_CERTIFICATE_${seq}`;
        return [key, values.files[key]];
    })
);

// 合并初始对象与动态生成的对象
const files = {
    BIRTH_CERTIFICATE: values.files.BIRTH_CERTIFICATE,
    RESUME: values.files.RESUME,
    ...childrenCertificates
};

方法三:一步到位的简洁写法

直接在对象字面量中完成合并,减少中间变量:

const files = {
    BIRTH_CERTIFICATE: values.files.BIRTH_CERTIFICATE,
    RESUME: values.files.RESUME,
    // 动态生成并展开子项证书属性
    ...Object.fromEntries(
        Array.from({ length: childrenCount }, (_, i) => {
            const key = `CHILDREN_BIRTH_CERTIFICATE_${i + 1}`;
            return [key, values.files[key]];
        })
    )
};

注意事项

  • 若values.files中可能不存在对应序号的子项证书键,可添加默认值处理:
    return [key, values.files[key] ?? null]; // 用null替代undefined
    
  • 所有方法均未修改原始的values.files对象,保证了数据不可变性(若业务允许直接修改,也可省略对象复制步骤)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:37:58