Remove duplicates from the string variable type.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-10-2025 05:10 AM
There is a use case table with a field called 'mandate variables,' where backend variable names are added. This use case table is associated with the current catalog item. I have written a script to retrieve the variable names from the 'mandate variables' field in the use case, but it is not removing the duplicate entries from the array.
var va = '6e263fa6875e121046e3ca6e8bbb358a';
var arr = [];
var gr = new GlideRecord('u_sc_catalog_item_use_case');
gr.addQuery('u_catalog_item', va); //itemObj
gr.query();
var allMandateVariables = [];
var uniqueMandateVariables = [];
while (gr.next()) {
var mandateVariables = gr.getValue('u_mandate_variables');
if (mandateVariables) { // Check if mandateVariables is not empty
allMandateVariables.push(mandateVariables);
}
}
uniqueMandateVariables = new ArrayUtil().unique(allMandateVariables);
gs.print(uniqueMandateVariables);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-10-2025 05:44 AM
both the above answers weren't working. As per @Robert H suggestion it's not returning any values.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-10-2025 05:50 AM
share your latest script
what does the field "u_mandate_variables" contains? single value or multiple comma separated values
share logs as per below
var va = '6e263fa6875e121046e3ca6e8bbb358a';
var allMandateVariables = [];
var gr = new GlideRecord('u_sc_catalog_item_use_case');
gr.addQuery('u_catalog_item', va); //itemObj
gr.query();
while (gr.next()) {
var mandateVariables = gr.getValue('u_mandate_variables');
gs.info('mandateVariables is' + mandateVariables);
if (mandateVariables) { // Check if mandateVariables is not empty
allMandateVariables.push(mandateVariables);
}
}
gs.info('Before unique' + allMandateVariables);
var uniqueMandateVariables = new ArrayUtil().unique(allMandateVariables);
gs.print('After unique' + uniqueMandateVariables);
If my response helped please mark it correct and close the thread so that it benefits future readers.
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-10-2025 05:53 AM
PFB,
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-10-2025 06:05 AM - edited ‎04-10-2025 06:06 AM
see as I rightl pointed out there are more than 1 values in that u_mandate_variables field and hence while pushing into array it's not working and hence unique logic is not working
the 2nd & 3rd iteration shows 2 values without comma separated
Is that field supposed to have 1 value or more than 1 value?
if more than 1 then add comma as separator
try this code and it uses split on space
var va = '6e263fa6875e121046e3ca6e8bbb358a';
var gr = new GlideRecord('u_sc_catalog_item_use_case');
gr.addQuery('u_catalog_item', va); //itemObj
gr.query();
var allMandateVariables = [];
while (gr.next()) {
var mandateVariables = gr.getValue('u_mandate_variables');
if (mandateVariables) { // Check if mandateVariables is not empty
var variablesArray = mandateVariables.split(' '); // Split the string into an array
allMandateVariables = allMandateVariables.concat(variablesArray); // Add to the main array
}
}
var uniqueMandateVariables = new ArrayUtil().unique(allMandateVariables);
gs.print(uniqueMandateVariables);
If my response helped please mark it correct and close the thread so that it benefits future readers.
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-10-2025 06:11 AM
Hello @soundarya_123 ,
Sorry, my personal instance was down so I was doing this from memory.
Please use this line instead:
allMandateVariables = allMandateVariables.concat(mandateVariables.split(','));
I have updated my original reply as well.
Regards,
Robert