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  ||  ✨ 9x 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  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader