列表

详情


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 。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
/** * @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] */

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] 
 */

上一题