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

实现方案
可以实现,你可以参考以下步骤和代码完成需求:
核心思路
- 提取对象所有属性对应的数组,合并为一维数组
- 遍历每一项新增
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
相关产品推荐
相关产品推荐

