- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-23-2018 05:27 AM
Hi All,
I Have a requirement to compare the two string fields data and the difference need to be populated in the 3rd field.
1st field name: user input
2nd field name: existing data
3rd field name: missing data:
1 st field data : 1,2,3,4,5,6
2nd field data : 2,5,6
i need to compare the data between 1st field and 2nd field and difference should be populate in 3rd field.
3rd field data: 1,3,4
Thanks in advance,
kumar
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-23-2018 07:39 AM
I created an item in my dev instance and re-did the code. Try this you will just need to update the variable names as I created them as a, b, and c.
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}
//Type appropriate comment here, and begin script below
var a = g_form.getValue('a').toString().split(',');
var b = g_form.getValue('b').toString();
getDifference(a, b);
}
function getDifference(a, b)
{
// var j = 0;
var result = [];
for (var i = 0; i < a.length; i++){
if (b.toString().indexOf(a[i]) < 0){
result.push(a[i]);
}
}
g_form.setValue('c', result);
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-23-2018 07:15 AM
can you post the code here. And also the field vaues
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-23-2018 07:23 AM
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
var arr1=g_form.getValue("u_impacted_ci").split(',');
var arr2=g_form.getValue("u_cmdb_ci_data").split(',');
g_form.setValue("u_missing_servers",arr_diff(arr1,arr2));
function arr_diff (a1, a2) {
var a = [], diff = [];
for (var i = 0; i < a1.length; i++) {
a[a1[i]] = true;
}
for (var j = 0; j < a2.length; j++) {
if (a[a2[j]]) {
delete a[a2[j]];
} else {
a[a2[j]] = true;
}
}
for (var k in a) {
diff.push(k);
}
return diff.join();
}
}
note: i have replaced a2 field for loop value to "j".
u_impacted_ci data: adcadm03,adcadnis01,adchwe-mco10,adchwe-mco7,adchwe-mco8,adchwe-mco9,adcshaketable02,adcvadnis02,adcvcups,kumar,dileep,peddi
u_cmdb_ci_data: adcadm03,adcadnis01,adchwe-mco10,adchwe-mco7,adchwe-mco8,adchwe-mco9,adcshaketable02,adcvadnis02,adcvcups
ouput :
adcadnis01,adchwe-mco10,adchwe-mco7,adchwe-mco8,adchwe-mco9,adcshaketable02,adcvadnis02,adcvcups,kumar,dileep,peddi,
adcadnis01,
adchwe-mco10,
adchwe-mco7,
adchwe-mco8,
adchwe-mco9,
adcshaketable02,
adcvadnis02,
adcvcups,
,each,eachSlice,all,any,collect,detect,findAll,select,grep,include,member,inGroupsOf,inject,invoke,max,min,partition,pluck,reject,sortBy,toArray,zip,size,inspect,_reverse,_each,clear,first,last,compact,flatten,without,uniq,intersect,clone
thanks,
kumar

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-23-2018 07:30 AM
Do not change the function arr_diff() change it to 'i' from 'j', it worked for me with the function I posted.
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
var arr1=g_form.getValue("u_impacted_ci").split(',');
var arr2=g_form.getValue("u_cmdb_ci_data").split(',');
g_form.setValue("u_missing_servers",arr_diff(arr1,arr2));
function arr_diff (a1, a2) {
var a = [], diff = [];
for (var i = 0; i < a1.length; i++) {
a[a1[i]] = true;
}
for (var i = 0; i < a2.length; i++) {
if (a[a2[i]]) {
delete a[a2[i]];
} else {
a[a2[i]] = true;
}
}
for (var k in a) {
diff.push(k);
}
return diff.join();
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-23-2018 07:47 AM
Hi Abinay,
i have just used user code. even though it is giving me the same results:(
thanks,
kumar

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-23-2018 07:51 AM
Strange! I just used the same code and it worked for me. Can you post the code here again