Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Remove duplicate values Array

Harish KM
Kilo Patron
Kilo Patron

var res=[];

var changeArr='';

var changeTask = new GlideRecord('change_task');

changeTask.addQuery('change_request', current.sys_id);

changeTask.query();

while (changeTask.next())

  {

  changeArr+=','+changeTask.assignment_group.manager;

  res.push(current.u_technical_approver_users=changeArr); //

}

here i am getting duplicate values,

one group can have 2 managers with the same name. i want to eliminate the duplicate

can any one suggest?

Regards
Harish
1 ACCEPTED SOLUTION

I have converted your changeArr from a string to an array for easier processing (and no leading/trailing comma). To make it a comma separated string use arrayName.join(',');



var res=[];


var changeArr=[];


var changeTask = new GlideRecord('change_task');


changeTask.addQuery('change_request', current.sys_id);


changeTask.query();


while (changeTask.next())


  {


  changeArr.push(changeTask.assignment_group.manager);



  res.push(current.u_technical_approver_users=changeArr); //



}



var au = new ArrayUtil();


var newChangeArr = au.unique(changeArr);


var newRes = au.unique(res);


View solution in original post

10 REPLIES 10

Use : var au = new global.ArrayUtil(); // for scoped application

Can we not use 

var au = new ArrayUtil();

in workflow?

Accenture provided a great hand out in last year's ServiceNow conference that shows one way to use ArrayUtil and I've used this as a reference quite a few times. Hopefully sharing here is okay:



var loggingSource = '\t****FS:CC Lab 1.3 glideRecordLoopRefactored';


// First construct our comparison list


// Remember a one-dimensional array is a comma delimited list of


// values in JavaScript


var incidents = new GlideRecord('incident');


incidents.orderBy('number');


incidents.query();


// push the resultant sys_id recordset to a 1-dimensional array


incidentsList = [];


while (incidents.next()) {


        incidentsList.push(incidents.cmdb_ci + '');


        }


// remove any duplicates (to minimize our number of loops further)


incidentsList = new ArrayUtil().unique(incidentsList);


// Now do our query with our array using the 'IN' statement


var cmdb_ci = new GlideRecord('cmdb_ci');


cmdb_ci.addQuery('sys_id', 'IN', incidentsList);


cmdb_ci.orderBy('name');


// a bonus! we can now order the list!


cmdb_ci.query();


while (cmdb_ci.next()) {


        gs.info('---> {0} {1}',


                                      cmdb_ci.name,


                                      loggingSource);


        }


Chuck Tomasi
Tera Patron

Hi Chuck,



Can u provide me an example with ArrayUtil to eliminate duplicate?


Regards
Harish