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