- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-30-2024 09:54 AM - edited 08-30-2024 09:56 AM
I want Compare two arrays and if same values are same return only those elements in the array.
Here my script can someone help here -
Logic we are trying implement -
1. first we need to get login user manager and then fetch who reporting members logined user and his manager.
2. fetching userinfo from sys_user_grmember table who are part of app group.
3. we need compare step 1 and step 2 sys IDs and only which are common in both arrays
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-31-2024 08:20 AM
Hi @Mannam Praveen Try below code
(function() {
var arr = [];
var arr1 = [];
var final = [];
var currentUser = gs.getUserID();
var userGr = new GlideRecord('sys_user');
userGr.addQuery('sys_id', currentUser);
userGr.query();
if (userGr.next()) {
var currentUserManager = userGr.manager; // Manager of the logged-in user
var grUser = new GlideRecord('sys_user');
grUser.addQuery('manager', currentUserManager);
grUser.query();
while (grUser.next()) {
arr.push(grUser.sys_id.toString());
}
var grUser1 = new GlideRecord('sys_user');
grUser1.addQuery('manager', currentUser);
grUser1.query();
while (grUser1.next()) {
arr1.push(grUser1.sys_id.toString());
}
var combinedArray = arr.concat(arr1);
var groupMember = new GlideRecord('sys_user_grmember');
groupMember.addEncodedQuery('group.nameLIKEApp'); // Adjust the query to your group name
groupMember.query();
var groupMembers = [];
while (groupMember.next()) {
groupMembers.push(groupMember.user.sys_id.toString());
}
final = combinedArray.filter(function(value) {
return groupMembers.indexOf(value) !== -1;
});
gs.info('Common Users: ' + final.join(', '));
}
})();
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-31-2024 08:20 AM
Hi @Mannam Praveen Try below code
(function() {
var arr = [];
var arr1 = [];
var final = [];
var currentUser = gs.getUserID();
var userGr = new GlideRecord('sys_user');
userGr.addQuery('sys_id', currentUser);
userGr.query();
if (userGr.next()) {
var currentUserManager = userGr.manager; // Manager of the logged-in user
var grUser = new GlideRecord('sys_user');
grUser.addQuery('manager', currentUserManager);
grUser.query();
while (grUser.next()) {
arr.push(grUser.sys_id.toString());
}
var grUser1 = new GlideRecord('sys_user');
grUser1.addQuery('manager', currentUser);
grUser1.query();
while (grUser1.next()) {
arr1.push(grUser1.sys_id.toString());
}
var combinedArray = arr.concat(arr1);
var groupMember = new GlideRecord('sys_user_grmember');
groupMember.addEncodedQuery('group.nameLIKEApp'); // Adjust the query to your group name
groupMember.query();
var groupMembers = [];
while (groupMember.next()) {
groupMembers.push(groupMember.user.sys_id.toString());
}
final = combinedArray.filter(function(value) {
return groupMembers.indexOf(value) !== -1;
});
gs.info('Common Users: ' + final.join(', '));
}
})();
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-31-2024 09:35 AM
Thanks for the Script. it is working in the background script but my requirement is Make it Dynamic filter. so for that i have used same code in script include it is working when calling background scrip but it is not showing any records. can you please help me here
Created the dynamic filter on sys_user as we are getting user SYSID's
If i navigate sys_user table and select dynamic and selection option it is not showing any records.
Below example of I filter similary i need to see user records for the given code;
Please help here