{"ScriptPreparationCode":"var data = [ ...Array(100).keys() ].map(() =\u003E {\r\n let value = Math.floor(Math.random() * 10000);\r\n if(value \u003E 9000) return {value: null};\r\n return {value};\r\n});\r\n ","TestCases":[{"Name":"Math.min/max with spread","Code":"let testData = data.map(d =\u003E d[\u0027value\u0027]).filter(d =\u003E d != null);\r\nlet hasValidValues = testData.length \u003E 0;\r\nvar min = Math.min(...testData);\r\nvar max = Math.max(...testData);","IsDeferred":false},{"Name":"forEach","Code":" let min = Number.MAX_VALUE;\r\n let max = Number.MIN_VALUE;\r\n let hasValidValues = data.some(d =\u003E d[\u0027value\u0027]);\r\n\r\n data.forEach(obj =\u003E {\r\n const value = obj[\u0027value\u0027];\r\n if (value == null) return;\r\n if (value \u003C min) min = value;\r\n if (value \u003E max) max = value;\r\n });","IsDeferred":false},{"Name":"Reducer","Code":"let hasValidValues = data.some(d =\u003E d[\u0027value\u0027] != null);\r\n\r\nconst res = data.reduce((acc, d) =\u003E {\r\n const value = d[\u0027value\u0027];\r\n if(value != null){\r\n if (value \u003C acc.mmin) acc.min = value;\r\n if (value \u003E acc.max) acc.max = value;\r\n }\r\n return acc;\r\n}, {min: Number.MAX_VALUE, max: Number.MIN_VALUE});","IsDeferred":false},{"Name":"forEach with hasValidValues in loop","Code":" let min = Number.MAX_VALUE;\r\n let max = Number.MIN_VALUE;\r\n let hasValidValues = false;\r\n\r\n data.forEach(obj =\u003E {\r\n if (\u0027value\u0027 in obj) {\r\n const value = obj[\u0027value\u0027];\r\n if (value === null) return;\r\n hasValidValues = true;\r\n if (value \u003C min) min = value;\r\n if (value \u003E max) max = value;\r\n }\r\n });","IsDeferred":false},{"Name":"apply","Code":"let testData = data.map(d =\u003E d[\u0027value\u0027]).filter(d =\u003E d != null);\r\nlet hasValidValues = testData.length \u003E 0;\r\nvar min = Math.min.apply(null, testData);\r\nvar max = Math.max.apply(null, testData);","IsDeferred":false}]}