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

使用Sequelize时,如何通过JavaScript Reduce生成指定JSON格式输出?

问题解决:按block.ok值分组用户ID

原代码存在的问题

  1. test是对象类型,不能直接调用数组的reduce方法,需先转为值数组
  2. 分组逻辑完全颠倒:原代码用user作为分组键,收集block.ok值,而需求是用block.ok作为键,收集对应的user值
  3. 最终拼接时未将数组转为逗号分隔的字符串

修正后的代码

const test = {
    one: {
        'user': '2',
        'status': '1', block: {
            'ok': 'false'
        }
    },
    two: {
        'user': '3',
        'status': '1', block: {
            'ok': 'false'
        }
    },
    three: {
        'user': '4',
        'status': '1', block: {
            'ok': 'false'
        }
    },
    five: {
        'user': '5',
        'status': '0', block: {
            'ok': 'true'
        }
    }
};

// 转换对象为值数组后执行分组
const grouped = Object.values(test).reduce((groups, item) => {
    const groupKey = item.block.ok;
    // 初始化或追加当前用户ID到对应分组
    groups[groupKey] = [...(groups[groupKey] || []), item.user];
    return groups;
}, {});

// 格式化为要求的字符串输出
const resultText = Object.entries(grouped).map(([key, ids]) => `${key}: ${ids.join(',')}`).join('\n');
console.log(resultText);

输出结果

false: 2,3,4
true: 5

说明

原数据中前3项的block.ok为'false',对应用户ID 2、3、4;最后一项block.ok为'true',对应用户ID 5。若你需要的输出是true: 2,3,4、false:5,只需将分组键改为item.block.ok === 'false' ? 'true' : 'false'即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 16:10:27