How to find an intersection of array data in a script include
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
ā09-03-2020 04:16 AM
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

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
ā09-03-2020 07:06 AM
Have you tried
Muhammad
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
ā09-03-2020 07:16 AM
yes, I tried this:
var my_roles = [];
my_roles = gs.getUser().getUserRoles().toString().split(',');
didnt work unfortunately...
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
ā09-03-2020 08:18 AM
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:
Regards
Ankur
Ankur
⨠Certified Technical Architect || ⨠9x ServiceNow MVP || ⨠ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
ā09-04-2020 07:59 AM
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
Ankur
⨠Certified Technical Architect || ⨠9x ServiceNow MVP || ⨠ServiceNow Community Leader