{"ScriptPreparationCode":"var oldArr = [\r\n { name: \u0022A\u0022, inputs: [{ name: \u0022i-a\u0022, values: [{ name: \u0022i-a-v\u0022, required: true }]}]},\r\n { name: \u0022B\u0022, inputs: [{ name: \u0022i-b\u0022, values: [{ name: \u0022i-b-v\u0022, required: true }]}]}\r\n];\r\n\r\nvar newArr = [\r\n { name: \u0022A\u0022, inputs: [{ name: \u0022i-a\u0022, values: [{ name: \u0022i-a-v\u0022, required: false }]}]},\r\n { name: \u0022B\u0022, inputs: [{ name: \u0022i-b\u0022, values: [{ name: \u0022i-b-v\u0022, required: true }]}]}\r\n];","TestCases":[{"Name":"Native","Code":"newArr.reduce((names, {name}) =\u003E {\r\n return names.concat(\r\n !oldArr.some(oldItem =\u003E oldItem.name === name) ? name : []\r\n );\r\n}, [])","IsDeferred":false},{"Name":"Lodash.js filter","Code":"_.differenceWith(newArr, oldArr, _.isEqual);","IsDeferred":false}]}