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

JavaScript中如何将对象指定属性转为对象数组并添加回原对象

对象数组转换解决方案

现有代码错误点

  • 共享引用问题:obj1对象、qty数组定义在循环外部,每次循环修改的是同一个内存地址的对象,且所有项的qty字段都指向同一个数组,最终所有元素内容会互相影响
  • 缺少total_rate统一逻辑:预期结果中所有项的total_rate均为38000,原逻辑没有处理该字段
  • 变量未合规声明:qrt1、rate1未使用let/const声明,会泄露为全局变量

正确实现代码

方案1:遍历修改原数组(和你的实现思路对齐)

// 按预期取统一的total_rate,这里取原数组最后一项的total_rate,也可根据需求替换为取最大值等逻辑
const finalTotalRate = obj[obj.length - 1].total_rate

for (let i = 0; i < obj.length; i++) {
    // 每次循环创建独立的子对象和数组,避免引用共享
    const qtySubItem = {
        qty: obj[i].qty,
        rate: obj[i].rate
    }
    obj[i].qty = [qtySubItem]
    obj[i].total_rate = finalTotalRate
}

方案2:map生成新数组(不修改原数组,更推荐)

const finalTotalRate = obj.at(-1).total_rate
const transformedObj = obj.map(item => ({
    org_id: item.org_id,
    qty: [
        {
            qty: item.qty,
            rate: item.rate
        }
    ],
    total_rate: finalTotalRate
}))

运行后transformedObj即为你需要的目标数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:15:01