/**
* @param {Object|Array} obj
* @return {Object|Array}
*/
var undefinedToNull = function(obj) {
};
/**
* undefinedToNull({"a": undefined, "b": 3}) // {"a": null, "b": 3}
* undefinedToNull([undefined, undefined]) // [null, null]
*/
2775. 将 undefined 转为 null
编写一个名为 undefinedToNull
的函数,该函数接受一个深层嵌套的对象或数组 obj
,并创建该对象的副本,将其中的任何 undefined
值替换为 null
。
当使用 JSON.stringify()
将对象转换为 JSON 字符串时,undefined
值与 null
值的处理方式不同。该函数有助于确保序列化数据不会出现意外错误。
示例 1:
输入:obj = {"a": undefined, "b": 3} 输出:{"a": null, "b": 3} 解释:obj.a 的值已从 undefined 更改为 null 。
示例 2:
输入:obj = {"a": undefined, "b": ["a", undefined]} 输出:{"a": null,"b": ["a", null]} 解释:obj.a 和 obj.b[1] 的值已从 undefined 更改为 null 。
提示:
obj
是一个有效的 JSON 对象或数组2 <= JSON.stringify(obj).length <= 105
原站题解
typescript 解法, 执行用时: 80 ms, 内存消耗: 47.3 MB, 提交时间: 2023-10-15 14:48:59
type JSONValue = null | boolean | number | string | JSONValue[] | { [key: string]: JSONValue }; type Value = undefined | null | boolean | number | string | Value[] | { [key: string]: Value }; type Obj1 = Record<string, Value> | Array<Value> type Obj2 = Record<string, JSONValue> | Array<JSONValue> function undefinedToNull(obj: Record<any, any>): Record<any, any> { if (obj === undefined) return null; if (typeof obj !== 'object' || typeof obj === null) return obj; for (const key in obj) { obj[key] = undefinedToNull(obj[key]); } return obj; }; function undefinedToNull2(obj: Record<any, any>): Record<any, any> { Object.keys(obj).forEach((key,idx)=>{ const value = obj[key]; if(value===undefined){ obj[key] = null } if(typeof value ==='object'&&value){ undefinedToNull(value) } // if(Array.isArray(value)){ // value.forEach((o)=>{ // }) // } }) return obj; }; /** * undefinedToNull({"a": undefined, "b": 3}) // {"a": null, "b": 3} * undefinedToNull([undefined, undefined]) // [null, null] */
javascript 解法, 执行用时: 72 ms, 内存消耗: 46.6 MB, 提交时间: 2023-10-15 14:48:25
/** * @param {object} obj * @return {object} */ var undefinedToNull1 = function(obj) { for(let item in obj){ if(typeof obj[item] === 'object'){ obj[item] = undefinedToNull(obj[item]) } if(!obj[item] && obj[item] !== 0 && obj[item] !== false && obj[item] !== ''){ obj[item] = null } } return obj }; var undefinedToNull = function(obj) { if (obj === undefined) return null; if (!(obj instanceof Object)) return obj; for (const key in obj) { obj[key] = undefinedToNull(obj[key]); } return obj; }; /** * undefinedToNull({"a": undefined, "b": 3}) // {"a": null, "b": 3} * undefinedToNull([undefined, undefined]) // [null, null] */