How to pass object value into array

Bhavikanth Redd
Tera Contributor

Hi 
I'm not getting expected output and correct me if something missing
My script :

var gr= new GlideRecord('incident');
gr.addQuery('sys_id','c2b3b1e2db3f9090bf6c3762ba9619a6');
gr.query();
while(gr.next()){
var arr =[];
var obj={};
var text= {"results": [{"status": "fail","value":"Test1"},{"status": "fail","value":"Test2"}]}
obj.number = gr.number;
obj.short = gr.short_description;
var res = JSON.parse(text);
for(var i=0;i<res.results.length;i++){
if( res.results[i].status =="fail"){
obj.textValue = res.results[i].value);
arr.push(obj);
}
}
for(var i=0;i<arr.length;i++){
gs.print(arr[i].number+"-"+arr[i].short +"-"+arr[i].textValue);
}
}

Output (wrong):
INC123 - Demo1 - Test1
INC123 - Demo1 - Test1

Expected Output:
INC123 - Demo1 - Test1
INC123 - Demo1 - Test2

 

Thanks!!

4 REPLIES 4

RaghavSh
Kilo Patron

Make below changes:

obj.number = gr.number.toString();
obj.short = gr.short_description.toString();

 

Also if( res.results[i].status =="fail") This if condition only pushes value to array if status is fail and Test2 has status as pass so it is not pushing value in array. You need to remove this if condition


Raghav
MVP 2023

@RaghavSh ,

var text= {"results": [{"status": "fail","value":"Test1"},{"status": "fail","value":"Test2"}]}

 

Output (wrong):
INC123 - Demo1 - Test1
INC123 - Demo1 - Test1

Expected Output:
INC123 - Demo1 - Test1
INC123 - Demo1 - Test2

Try below script:

 

var gr= new GlideRecord('incident');
gr.addQuery('sys_id','c2b3b1e2db3f9090bf6c3762ba9619a6');
gr.query();
while(gr.next()){
var arr =[];
var obj={};
var i;
var text= {"results": [{"status": "fail","value":"Test1"},{"status": "fail","value":"Test2"}]}

var res = JSON.parse(JSON.stringify(text));
for(i=0;i<res.results.length;i++){
if( res.results[i].status =="fail")
{

var obj={};
obj.textValue = res.results[i].value+" ";
obj.number = gr.number;
obj.shortDesc = gr.short_description;
arr.push(obj);
}
}
for(var i=0;i<arr.length;i++){
gs.print(arr[i].number+"-"+arr[i].shortDesc +"-"+arr[i].textValue);
}
}


Please mark the answer correct/helpful accordingly.


Raghav
MVP 2023

Mohit_Gupta
Tera Guru
Tera Guru

Hi @Bhavikanth Redd ,

 

I don't know what's your exact requirement and basis on your output I played with your code and made some corrections and achieved the Output below code you can use to get the same output.

var gr= new GlideRecord('incident');
gr.addQuery('sys_id','c2b3b1e2db3f9090bf6c3762ba9619a6');
gr.query();
if(gr.next()){
var arr =[];
var obj={};
var text= {"results": [{"status": "fail","value":"Test1"},{"status": "pass","value":"Test2"}]}
obj.number = gr.number;
obj.shortdesc = gr.short_description;
//var res = JSON.parse(text);
}
for(var i=0;i<=text.results.length;i++)
{

if(text.results[i].status =="fail")
{
obj.textValue = text.results[i].value;
//arr.push(obj);
gs.print(obj.number+"-"+obj.shortdesc +"-"+obj.textValue);
}

else if(text.results[i].status =="pass")
{
obj.textValue = text.results[i].value;
//arr.push(obj);
gs.print(obj.number+"-"+obj.shortdesc +"-"+obj.textValue);
}
}

I hope this helps 

Please mark my answer correct if this helps you 

Thanks

Mohit