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 item from JSON list

Amy V2
Mega Sage

I'm trying to remove a specific item from a JSON list. Below is a generic example of a JSON list that gets created from an OOTB business rule when a user changes the variables on a form they submitted.

 

[{"questionLabel":"Item to Remove","questionCurrValue":"new variable value","questionPrevValue":"previous variable value"},{"questionLabel":"Second item in list","questionCurrValue":"Yes","questionPrevValue":"No"},{"questionLabel":"Third item in list","questionCurrValue":"second test","questionPrevValue":"first test"},{"questionLabel":"Hidden item in list","questionCurrValue":"NA","questionPrevValue":""}]

 

What I'd like to do is search for the question labeled Item to Remove, and remove that whole item from the list, so the resulting list would be:

 

[{"questionLabel":"Item to Remove","questionCurrValue":"new variable value","questionPrevValue":"previous variable value"},{"questionLabel":"Second item in list","questionCurrValue":"Yes","questionPrevValue":"No"},{"questionLabel":"Third item in list","questionCurrValue":"second test","questionPrevValue":"first test"},{"questionLabel":"Hidden item in list","questionCurrValue":"NA","questionPrevValue":""}]

 

Any help is appreciated. Thanks!

1 ACCEPTED SOLUTION

Nishant8
Giga Sage
Giga Sage

Hello @Amy V2 , can you please try as below?

var data = [
  { questionLabel: "Item to Remove", questionCurrValue: "new variable value", questionPrevValue: "previous variable value" },
  { questionLabel: "Second item in list", questionCurrValue: "Yes", questionPrevValue: "No" },
  { questionLabel: "Third item in list", questionCurrValue: "second test", questionPrevValue: "first test" },
  { questionLabel: "Hidden item in list", questionCurrValue: "NA", questionPrevValue: "" }
];
// Filter out unwanted item
var filteredData = data.filter(item => item.questionLabel !== "Item to Remove");
gs.info(JSON.stringify(filteredData));

Regards,

Nishant

View solution in original post

5 REPLIES 5

Ankur Bawiskar
Tera Patron
Tera Patron

@Amy V2 

try this

// Your original JSON array as a string
var jsonString = '[{"questionLabel":"Item to Remove","questionCurrValue":"new variable value","questionPrevValue":"previous variable value"},{"questionLabel":"Second item in list","questionCurrValue":"Yes","questionPrevValue":"No"},{"questionLabel":"Third item in list","questionCurrValue":"second test","questionPrevValue":"first test"},{"questionLabel":"Hidden item in list","questionCurrValue":"NA","questionPrevValue":""}]';

// Parse the string to a JS array
var jsonArray = JSON.parse(jsonString);

// The label you want to remove
var labelToRemove = "Item to Remove";

// Filter out the item(s) with that label
var filteredArray = jsonArray.filter(function(item) {
    return item.questionLabel !== labelToRemove;
});

// Convert back to JSON string if needed
var resultString = JSON.stringify(filteredArray);

// Output (for testing)
gs.info(resultString);

Output:

AnkurBawiskar_0-1747846004856.png

 

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader