最近,我需要在 api 中处理输入和输出数据的日志记录。但是,我遇到了一个问题:某些属性包含无法在日志中显示的敏感数据。当处理一个简单的对象时,处理这个问题很简单,但是当处理具有多个级别的嵌套对象时,事情会变得更加复杂。这就是递归的用武之地。使用递归,可以在线性时间 o(n) 内有效地处理这个问题。代码如下:
const sensitiveFields = ['password', 'email', 'userCode']; function handleSensitivesFields(data) { if (typeof data !== 'object' || data === null) { return data; } for (const key in data) { if (sensitiveFields.includes(key)) { const value = data[key]; if (typeof value === 'string') data[key] = createMask(value.length); } if (typeof data[key] === 'object') handleSensitivesFields(data[key]); } }