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

如何在JavaScript中实现对象数组的规则聚合与数据校验

数组对象values字段按规则聚合实现

实现思路

  • 首先遍历数组所有元素的values字段,统计每个键的非空值出现次数,同时记录仅出现一次的非空值内容
  • 随后基于统计结果生成最终聚合对象:若键对应的非空值出现次数大于1,赋值为空串;否则直接使用记录的非空值

完整实现代码

// 示例输入
let userValues = [
    {
        "userId": "810",
        "values": {
            "21866": "Russia",
            "21867": "Dog",
            "21868": ""
        },
    },
    {
        "userId": "811",
        "values": {
            "21866": "UAE",
            "21867": "",
            "21868": "cheddar cheese"
        },
    }
]

function aggregateValues(arr) {
    const keyStats = {}
    // 第一步:统计所有key的非空值出现次数和对应值
    arr.forEach(item => {
        const values = item.values || {}
        Object.keys(values).forEach(key => {
            const val = values[key]
            // 过滤空值:空字符串、null、undefined都判定为空
            if (val === '' || val == null) return
            if (!keyStats[key]) {
                keyStats[key] = {
                    count: 1,
                    value: val
                }
            } else {
                keyStats[key].count += 1
            }
        })
    })
    // 第二步:生成聚合结果
    const result = {}
    Object.keys(keyStats).forEach(key => {
        result[key] = keyStats[key].count > 1 ? '' : keyStats[key].value
    })
    return result
}

// 测试输出
let aggregatedValue = aggregateValues(userValues)
console.log(aggregatedValue)
// 输出和示例一致:{ '21866': '', '21867': 'Dog', '21868': 'cheddar cheese' }

适配说明

代码默认将null、undefined、空字符串都判定为空值,如果业务里的空值判定规则有差异,直接修改代码里的空值判断逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:24:02