Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Need to push the unique value in client script

Sai18
Tera Expert

I have two fields (Both are list collectors)

Epic Account Type

Domain

 

Based on epic account type and domain we need to push the value to citrix icons

Sai18_0-1708629022268.png

 

I have used 2 client scripts upon onchange of Epic account type and Domain, If we choose multiple domains US & DEVAD. it is pushing both values so I am getting duplicates

Onchange of Epic Account Type

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading) {
        return;
    }
    var domain = g_form.getDisplayValue('domain').split(',');

    if (newValue == '' || domain == '') {
        g_form.clearValue('citrix_icons');
        return;
    }

    var data_map = {
        "US": {
            "Epic Hyperspace Admins": "TS- EPIC Hyperspace Admins",
            "Epic Hyperdrive": "TS-Epic Hyperdrive",
            "Epic Text Access": "TS- Reflection ICON",
            "Epic Hyperspace TST Admins": ""
        },
        "DEVAD": {
            "Epic Hyperspace Admins": "TS- EPIC Hyperspace Admins",
            "Epic Hyperdrive": "",
            "Epic Text Access": "TS- Reflection ICON",
            "Epic Hyperspace TST Admins": "TS- EPIC Hyperspace NonPRD"
        }

    };

    var out_value = [];
    var acc_type = g_form.getDisplayValue('epic_account_type').split(',');

    for (var i = 0; i < domain.length; i++) {
        for (var j = 0; j < acc_type.length; j++) {
            var t_value = data_map[domain[i].trim()][acc_type[j].trim()];
            if (t_value) out_value.push(t_value);
        }
    }
    g_form.setValue('citrix_icons', out_value.join(', '));
    // if(out_value.length == 2) out_value.push('TS-Epic Hyperspace Admins');
   
    //g_form.setValue('citrix_icons', out_value.join(', '));

}
Onchange of Domain
 
function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading) {
        return;
    }
    var acc_type = g_form.getDisplayValue('epic_account_type').split(',');


    if (newValue == '' || acc_type == '') {
        g_form.clearValue('citrix_icons');
        return;
    }

    var data_map = {
        "US": {
            "Epic Hyperspace Admins""TS- EPIC Hyperspace Admins",
            "Epic Hyperdrive""TS-Epic Hyperdrive",
            "Epic Text Access""TS- Reflection ICON",
            "Epic Hyperspace TST Admins"""
        },
        "DEVAD": {
            "Epic Hyperspace Admins""TS- EPIC Hyperspace Admins",
            "Epic Hyperdrive""",
            "Epic Text Access""TS- Reflection ICON",
            "Epic Hyperspace TST Admins""TS- EPIC Hyperspace NonPRD"
        }

    };

    var out_value = [];
    var domain = g_form.getDisplayValue('domain').split(',');

    for (var i = 0; i < domain.length; i++) {
        for (var j = 0; j < acc_type.length; j++) {
            var t_value = data_map[domain[i].trim()][acc_type[j].trim()];
            if (t_value) out_value.push(t_value);
        }
    }
    g_form.setValue('citrix_icons', out_value.join(', '));
    //if(out_value.length == 2) out_value.push(t_value);

    g_form.setValue('citrix_icons', out_value.join(', '));

}
I am getting output as like this
Sai18_1-1708629022285.png

 

 



I need to push the unique values no duplicates. Please provide your assistance

2 ACCEPTED SOLUTIONS

Sarika S Nair1
Kilo Sage

Hi @Sai18 

Make below changes in the for loop line in  script 

 

 

 for (var i = 0; i < domain.length; i++) {
        for (var j = 0; j < acc_type.length; j++) {
            var t_value = data_map[domain[i].trim()][acc_type[j].trim()];
            if ((t_value)&&(out_value.indexOf(t_value)==-1)){
out_value.push(t_value);
}
        }
    }

 

 

View solution in original post

Hi @Sai18 , 

If my response resolved your issue, please mark it as helpful and accept the solution

Thanks

View solution in original post

3 REPLIES 3

Sarika S Nair1
Kilo Sage

Hi @Sai18 

Make below changes in the for loop line in  script 

 

 

 for (var i = 0; i < domain.length; i++) {
        for (var j = 0; j < acc_type.length; j++) {
            var t_value = data_map[domain[i].trim()][acc_type[j].trim()];
            if ((t_value)&&(out_value.indexOf(t_value)==-1)){
out_value.push(t_value);
}
        }
    }

 

 

Hi @Sai18 , 

If my response resolved your issue, please mark it as helpful and accept the solution

Thanks

Thank you, its working fine now