{"ScriptPreparationCode":"/*your preparation JavaScript code goes here\r\nTo execute async code during the script preparation, wrap it as function globalMeasureThatScriptPrepareFunction, example:*/\r\nasync function globalMeasureThatScriptPrepareFunction() {\r\n // This function is optional, feel free to remove it.\r\n // await someThing();\r\n}","TestCases":[{"Name":"Foreach test","Code":"let items = [\r\n {color: \u0027red\u0027, type: \u0027tv\u0027, age: 18}, \r\n {color: \u0027silver\u0027, type: \u0027phone\u0027, age: 20},\r\n {color: \u0027blue\u0027, type: \u0027book\u0027, age: 17}\r\n] \r\nconst excludes = [ \r\n {k: \u0027color\u0027, v: \u0027silver\u0027}, \r\n {k: \u0027type\u0027, v: \u0027tv\u0027}, \r\n] \r\nfunction excludeItems(items, excludes) { \r\n excludes.forEach( pair =\u003E { \r\n items = items.filter(item =\u003E item[pair.k] === item[pair.v])\r\n })\r\n \r\n return items\r\n} \r\nconsole.log(excludeItems(items, excludes))","IsDeferred":false},{"Name":"Map","Code":"let items = [\r\n {color: \u0027red\u0027, type: \u0027tv\u0027, age: 18}, \r\n {color: \u0027silver\u0027, type: \u0027phone\u0027, age: 20},\r\n {color: \u0027blue\u0027, type: \u0027book\u0027, age: 17}\r\n] \r\nconst excludes = [ \r\n {k: \u0027color\u0027, v: \u0027silver\u0027}, \r\n {k: \u0027type\u0027, v: \u0027tv\u0027}, \r\n] \r\nfunction excludeItems(items, excludes) {\r\n const excludes_map = new Map();\r\n excludes.forEach(({k, v}) =\u003E {\r\n if (!excludes_map.has(k)) {\r\n excludes_map.set(k, new Set())\r\n }\r\n excludes_map.get(k).add(v)\r\n })\r\n\r\n return items.filter(item =\u003E (\r\n excludes.every(({k}) =\u003E (\r\n !(item.hasOwnProperty(k) \u0026\u0026 excludes_map.get(k).has(item[k]))\r\n ))\r\n ))\r\n}\r\nconsole.log(excludeItems(items, excludes))","IsDeferred":false},{"Name":"faster","Code":"let items = [\r\n {color: \u0027red\u0027, type: \u0027tv\u0027, age: 18}, \r\n {color: \u0027silver\u0027, type: \u0027phone\u0027, age: 20},\r\n {color: \u0027blue\u0027, type: \u0027book\u0027, age: 17}\r\n] \r\nconst excludes = [ \r\n {k: \u0027color\u0027, v: \u0027silver\u0027}, \r\n {k: \u0027type\u0027, v: \u0027tv\u0027}, \r\n] \r\n\r\nfunction excludeItems(items, excludes) {\r\n let map = new Map();\r\n let exclude_keys = new Set();\r\n \r\n excludes.forEach(({k,v})=\u003E{\r\n exclude_keys.add(k);\r\n if(!map.has(k)){\r\n map.set(k,new Set());\r\n }\r\n map.get(k).add(v);\r\n })\r\n\r\n return items.filter(item=\u003E{\r\n return [...exclude_keys].every(ex_key=\u003E{\r\n return !map.get(ex_key).has(item[ex_key])\r\n })\r\n });\r\n}\r\n\r\nconsole.log(excludeItems(items, excludes))","IsDeferred":false}]}