Problem 45

Deep Freeze Recursion Challenge

Given an object or array, freeze it and every nested object or array inside it so that no properties can be modified. Return the same input after freezing. Primitive values should be returned as-is.

Function Signature

deepFreeze(input)

Parameters

  • input — any value. If it is an object or array, freeze it and all nested objects/arrays. Primitives are returned unchanged.

Output

Return the same input reference after deeply freezing it.

Constraints

  • The function must use recursion.
  • The function should accept exactly one argument.

Examples

deepFreeze({a: {b: {c: 1}}, d: 2})
// All nested objects are now frozen

deepFreeze([1, [2, {three: 3}], {four: [4]}])
// All nested arrays and objects are now frozen

deepFreeze(1)     → 1
deepFreeze('hi')  → 'hi'
deepFreeze(null)  → null