Javascript 如何在NodeJS中排除和格式化匹配值?

Javascript 如何在NodeJS中排除和格式化匹配值?,javascript,node.js,dictionary,object,Javascript,Node.js,Dictionary,Object,我有一个对象obj,如下所示: const obj = { Hostname: "abc.com" Check1Status: "PASS" Check2Status: "PASS" Check3Status: "FAIL" Check3ErrorHeading: "Reason for Check3" Check3ErrorDetail: "Details for Check3&quo

我有一个
对象
obj
,如下所示:

const obj = {
Hostname: "abc.com"
Check1Status: "PASS"
Check2Status: "PASS"
Check3Status: "FAIL"
Check3ErrorHeading: "Reason for Check3"
Check3ErrorDetail: "Details for Check3"
Check4Status: "FAIL"
Check4ErrorHeading: "Reason for Check4"
Check4ErrorDetail: "Details for Check4"
TotalExecutions: 5
};
  • 我想捕获
    TotalExecutions
  • 我想排除所有具有
    PASS
    作为价值
  • 我想排除键
    Hostname
    和它的值
  • 我只想将状态为
    检查
    捕获为
    失败
    使输出如下所示:
    TotalExecutions:5,Check3:Check3的原因:Check3的详细信息,Check4:Check4的原因:Check4的详细信息
  • 最终输出应为
    字符串
    。 我已经编写了以下代码,它排除了
    PASS
    TotalExecutions
    并排除了
    HostName
    ,但没有实现
    4

                const result = Object.values(obj).map
                (el => Object.entries(el).filter(([key, value]) => value !== 'PASS' && key !== 'Hostname').reduce((acc, [key, value]) => ({
                    ...acc,
                    [key]: value
                }), {}));
    

    以下内容应该适合您

    const obj = {
        Hostname: "abc.com",
        Check1Status: "PASS",
        Check2Status: "PASS",
        Check3Status: "FAIL",
        Check3ErrorHeading: "Reason for Check3",
        Check3ErrorDetail: "Details for Check3",
        Check4Status: "FAIL",
        Check4ErrorHeading: "Reason for Check4",
        Check4ErrorDetail: "Details for Check4",
        TotalExecutions: 5
    };
    
    let resultObj = {};
    
    for (let prop in obj) {
        if (prop == "TotalExecutions") {
            resultObj[prop] = obj[prop];
        }
    
        if (obj[prop] == "FAIL") {
            let startOfKey = prop.replace("Status", "");
            resultObj[startOfKey] = obj[startOfKey + "ErrorHeading"] + ":" + obj[startOfKey + "ErrorDetail"]
        }
    
    }
    console.log(resultObj)
    

    以下内容应该适合您

    const obj = {
        Hostname: "abc.com",
        Check1Status: "PASS",
        Check2Status: "PASS",
        Check3Status: "FAIL",
        Check3ErrorHeading: "Reason for Check3",
        Check3ErrorDetail: "Details for Check3",
        Check4Status: "FAIL",
        Check4ErrorHeading: "Reason for Check4",
        Check4ErrorDetail: "Details for Check4",
        TotalExecutions: 5
    };
    
    let resultObj = {};
    
    for (let prop in obj) {
        if (prop == "TotalExecutions") {
            resultObj[prop] = obj[prop];
        }
    
        if (obj[prop] == "FAIL") {
            let startOfKey = prop.replace("Status", "");
            resultObj[startOfKey] = obj[startOfKey + "ErrorHeading"] + ":" + obj[startOfKey + "ErrorDetail"]
        }
    
    }
    console.log(resultObj)
    
    const obj={
    主机名:“abc.com”,
    检查状态:“通过”,
    检查状态:“通过”,
    Check3Status:“失败”,
    Check3ErrorHeading:“检查原因3”,
    Check3ErrorDetail:“Check3的详细信息”,
    Check4Status:“失败”,
    Check4ErrorHeading:“检查原因4”,
    Check4ErrorDetail:“Check4的详细信息”,
    执行总数:5
    };
    var output=[`总执行数:${obj.TotalExecutions}`];
    for(obj中的var键){
    如果(obj[键]=‘失败’){
    输出推送(`
    ${key.replace('Status','')}:
    ${obj[key.replace('Status','ErrorHeading')]}:
    ${obj[key.replace('Status','ErrorDetail')]}`)
    }
    }
    console.log(output.join(','))
    const obj={
    主机名:“abc.com”,
    检查状态:“通过”,
    检查状态:“通过”,
    Check3Status:“失败”,
    Check3ErrorHeading:“检查原因3”,
    Check3ErrorDetail:“Check3的详细信息”,
    Check4Status:“失败”,
    Check4ErrorHeading:“检查原因4”,
    Check4ErrorDetail:“Check4的详细信息”,
    执行总数:5
    };
    var output=[`总执行数:${obj.TotalExecutions}`];
    for(obj中的var键){
    如果(obj[键]=‘失败’){
    输出推送(`
    ${key.replace('Status','')}:
    ${obj[key.replace('Status','ErrorHeading')]}:
    ${obj[key.replace('Status','ErrorDetail')]}`)
    }
    }
    console.log(output.join(','))
    希望能对您有所帮助

    函数格式化程序(){
    常量对象={
    主机名:“abc.com”,
    检查状态:“通过”,
    检查状态:“通过”,
    Check3Status:“失败”,
    Check3ErrorHeading:“检查原因3”,
    Check3ErrorDetail:“Check3的详细信息”,
    Check4Status:“失败”,
    Check4ErrorHeading:“检查原因4”,
    Check4ErrorDetail:“Check4的详细信息”,
    执行总数:5
    };
    let result=`TotalExecutions:${obj['TotalExecutions']}`;
    Object.keys(obj.forEach)(key=>{
    如果(obj[键]=‘失败’){
    const checkKey=key.match(/Check\d/);
    const errorHeading=obj[`${checkKey}errorHeading`];
    const errorDetail=obj[`${checkKey}errorDetail`];
    结果+=`,${checkKey}:${errorHeading}:${errorDetail}`;
    }
    });
    返回结果;
    }
    log(格式化程序())希望它能帮助你

    函数格式化程序(){
    常量对象={
    主机名:“abc.com”,
    检查状态:“通过”,
    检查状态:“通过”,
    Check3Status:“失败”,
    Check3ErrorHeading:“检查原因3”,
    Check3ErrorDetail:“Check3的详细信息”,
    Check4Status:“失败”,
    Check4ErrorHeading:“检查原因4”,
    Check4ErrorDetail:“Check4的详细信息”,
    执行总数:5
    };
    let result=`TotalExecutions:${obj['TotalExecutions']}`;
    Object.keys(obj.forEach)(key=>{
    如果(obj[键]=‘失败’){
    const checkKey=key.match(/Check\d/);
    const errorHeading=obj[`${checkKey}errorHeading`];
    const errorDetail=obj[`${checkKey}errorDetail`];
    结果+=`,${checkKey}:${errorHeading}:${errorDetail}`;
    }
    });
    返回结果;
    }
    log(格式化程序())