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

JS中合并Object of Arrays并为数组项添加parseFloat处理的state属性

Object

实现方案

可以实现,你可以参考以下步骤和代码完成需求:

核心思路

  • 提取对象所有属性对应的数组,合并为一维数组
  • 遍历每一项新增state属性,赋值为parseFloat转换后的数值
  • 遍历过程中可同步完成每个键对应数组的数值累加统计

代码示例

完整实现(同时支持累加统计+合并数组+新增属性)

// 示例源数据,可替换为你的实际对象
const sourceObj = {
  "key1": ["12.3", 45.6, "78.9"],
  "key2": [23.4, "56.7", 89]
  // 其他键值对
}

// 存储每个键的累加结果
const keySumMap = {}
// 存储合并后的最终数组
const resultArr = []

Object.entries(sourceObj).forEach(([currentKey, currentArr]) => {
  // 统计当前键的所有数值累加和
  keySumMap[currentKey] = currentArr.reduce((sum, val) => sum + parseFloat(val), 0)
  
  // 处理当前数组的每一项,新增state属性后放入结果数组
  currentArr.forEach(item => {
    // 如果原数组项是对象,需要保留原有属性就解开下面的扩展运算符注释
    resultArr.push({
      // ...item, 
      state: parseFloat(item)
    })
  })
})

// 输出结果
console.log("各键累加结果:", keySumMap)
console.log("合并加属性后的数组:", resultArr)

简化版本(仅合并数组+新增state属性)

如果不需要做按键累加,一行代码即可完成:

const resultArr = Object.values(sourceObj).flat().map(item => ({
  // ...item, 
  state: parseFloat(item)
}))

注意事项

  • parseFloat转换非数值内容时会返回NaN,如果需要兼容异常值可以把赋值逻辑改成state: parseFloat(item) || 0
  • 如果原数组的项是基础类型(数字/字符串)不需要保留原值的话,可以直接只存state属性;如果是对象,打开扩展运算符注释即可保留原有属性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 00:06:05