176. undefined to null

You are asked to implement undefinedToNull() to return a copy that has all undefined replaced with null.

1
2
3
4
5
>undefinedToNull({a: undefined, b: 'BFE.dev'})
>// {a: null, b: 'BFE.dev'}

>undefinedToNull({a: ['BFE.dev', undefined, 'bigfrontend.dev']})
>// {a: ['BFE.dev', null, 'bigfrontend.dev']}

Answer

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function undefinedToNull(obj: any): any {
if (Array.isArray(obj)) {
return obj.map(elem => undefinedToNull(elem));
} else if (typeof obj === 'object' && obj !== null) {
const newObj = {};
for (const key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) {
newObj[key] = undefinedToNull(obj[key]);
}
}
return newObj;
} else {
return obj === undefined ? null : obj;
}
}

176. undefined to null
http://example.com/2023/04/25/bf-176/
作者
lyric
发布于
2023年4月25日
许可协议