【问题标题】:formatting an array of objects output格式化对象数组输出
【发布时间】:2018-12-14 04:28:47
【问题描述】:

我有一个对象数组,我试图让输出在使用过滤器和减少后正确显示。

它正在正确输出数据,但不是我想要的格式。非常感谢任何意见。

电流输出

{
 5: 12,
 6: 15,
 7: 12,
 ...
}

预期输出

{
 session5-count: 12,
 session6-count: 15,
 session7-count: 12,
 ...
}

我确定这是非常简单的事情,而且我还没有吃过午饭,所以可能会阻碍我的思考过程。

这是我的公式和示例数据

更新功能

感谢 alex-gzfrisch

const sessionsArray = [
    { session: '5', status: 'inactive' },
    { session: '5', status: 'inactive' },
    { session: '5', status: 'inactive' },
    { session: '5', status: 'active' },
    { session: '5', status: 'active' },
    { session: '5', status: 'active' },
    { session: '5', status: 'active' },
    { session: '5', status: 'active' },
    { session: '5', status: 'active' },
    { session: '5', status: 'active' },
    { session: '5', status: 'active' },
    { session: '5', status: 'active' },
    { session: '6', status: 'active' },
    { session: '6', status: 'active' },
    { session: '7', status: 'inactive' },
    { session: '7', status: 'inactive' },
    { session: '7', status: 'inactive' },
    ];

const filteredSessions  = sessionsArray
    .reduce( (acc, {session, status}) => {

        if(status != 'active'){
           acc["session-" + session ] = 0
        }else{           
            acc["session-" + session ] =
            acc["session-" + session ] + 1 || 1
        } 
        
        return acc
    }, {}) 

console.log(filteredSessions )

我正在尝试跟进并使用THIS S.O. ANSWER 来帮助格式化我的输出

【问题讨论】:

    标签: javascript


    【解决方案1】:

    您可以使用模板字符串来获得所需的密钥格式。像这样:

    const sessionsArray = [
    { session: '5', status: 'inactive' },
    { session: '5', status: 'inactive' },
    { session: '5', status: 'inactive' },
    { session: '5', status: 'active' },
    { session: '5', status: 'active' },
    { session: '5', status: 'active' },
    { session: '5', status: 'active' },
    { session: '5', status: 'active' },
    { session: '5', status: 'active' },
    { session: '5', status: 'active' },
    { session: '5', status: 'active' },
    { session: '5', status: 'active' },
    { session: '6', status: 'active' },
    { session: '6', status: 'active' },
    { session: '7', status: 'inactive' },
    { session: '7', status: 'active' },
    { session: '7', status: 'active' },
    ];
    
    const filteredSessions = sessionsArray
        .filter(workshop => workshop.status === 'active')
        .reduce( (acc, { session }) => {
            
            acc[`session${session}-count`] = acc[`session${session}-count`] + 1 || 1;
            
            return acc;
        }, {});
    
    console.log(filteredSessions)

    【讨论】:

    • 正是我需要的!
    • 顺便说一句,您可以使用解构来获取您需要的一个属性。 A.e. .reduce((acc, {session}) =>
    • 这是真的@zfrisch。现在在想这个。这不考虑会话是否将所有条目都设为“非活动”。如果我删除过滤器功能。我可以在reduce函数中添加一个返回0的条件吗?
    • @cpt-crunchy .reduce(acc, {session, status}) => { if(status != "active") return acc;
    • 我只是在测试它。谢谢@zfrisch
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2022-12-05
    相关资源
    最近更新 更多