We're reclaiming inactive PDIs to keep them available for active builders. Learn what's changing, who's affected, and how to protect your work. Read More

How to find an intersection of array data in a script include

Milan13
Giga Expert

Hello,

I have two arrays and need to find  count of records which these arrays share in common.

Need to place this in a script include and make this as simple as possible.

The array are:

var createCaseRoles = ['sn_customerservice.customer', 'sn_customerservice.customer_case_manager', 'sn_customerservice.customer_admin', 'sn_customerservice.partner', 'sn_customerservice.partner_admin', 'sn_customerservice.consumer', 'sn_customerservice_agent', 'sn_customerservice_manager', 'sn_customerservice.consumer_agent', 'sn_customerservice_manager'];

var my_roles =['sn_customerservice.customer_admin', 'sn_customerservice.partner_admin', 'sn_customerservice.customer_case_manager' , 'snc_internal' , 'admin' , 'sn_customerservice.customer', 'sn_customerservice.partner' ,'security_admin'];

Any idea how to make this as simple as possible with ossible use inside scriprt include, need to call a method in scriot include returning count of records these array share in common.

Appreciate your help,

Milan

 

18 REPLIES 18

Have you tried @Ankur Bawiskar solution of converting my_roles to Array using toString() and split() functions? 

Regards,
Muhammad

Milan13
Giga Expert

yes, I tried this:

var my_roles = [];
my_roles = gs.getUser().getUserRoles().toString().split(',');

 

didnt work unfortunately...

 

Hi Milan,

I was able to make it work

Please check now after updating the changes highlighted in bold

checkUserRoles: function() {

var my_roles = new global.ArrayUtil().convertArray(gs.getUser().getUserRoles());

var createCaseRoles = ['sn_customerservice.customer', 'sn_customerservice.customer_case_manager', 'sn_customerservice.customer_admin', 'sn_customerservice.partner', 'sn_customerservice.partner_admin', 'sn_customerservice.consumer', 'sn_customerservice_agent', 'sn_customerservice_manager', 'sn_customerservice.consumer_agent', 'sn_customerservice_manager'];

var intersectRoles = new global.ArrayUtil().intersect(my_roles.join().split(','), createCaseRoles);

var count = intersectRoles.length;

return intersectRoles;

},

Script I tried:

var my_roles = new global.ArrayUtil().convertArray(gs.getUser().getUserRoles());

gs.info('my_roles='+my_roles);

var arr = ['mid_server'];

var finalArr = new global.ArrayUtil().intersect(my_roles.join().split(','),arr);

gs.info(finalArr.length);

Output:

find_real_file.png

Regards
Ankur

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 10x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

Hi Milan,

Hope you are doing good.

Let me know if I have answered your question.

If so, please mark my answer as correct & helpful to close the thread and others can be benefited by this.

Regards
Ankur

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 10x ServiceNow MVP  ||  ✨ ServiceNow Community Leader