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 06:43 AM
Array's are also an object. If you try creating an array and test it with typeof it will give return you type as an object which means getUserRoles() returns an array.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
ā09-03-2020 06:26 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
ā09-03-2020 06:50 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
ā09-03-2020 05:48 AM
Hi,
Try below code,
checkUserRoles: function() {
this.arrautil = new global.ArrayUtil();
var my_roles;
my_roles = this.arrautil.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 = this.arrautil.intersect(my_roles, createCaseRoles);
return intersectRoles;
},
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
ā09-03-2020 06:59 AM
So the issue is that if I create array my_roles manually it retiurns arrInter with no problem, but when I create thea raay by my_roles = gs.getUser().getUserRoles(); it probably is not an array object as it does not work - some kind of convert issue...my_roles created manually gives result
//var my_roles = [];
// my_roles = gs.getUser().getUserRoles();
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'];
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 arr = new ArrayUtil();
var arrInter = arr.intersect(createCaseRoles, my_roles);
return arrInter;