PHP前端开发

如何使用递归匿名化对象中的属性

百变鹏仔 3天前 #JavaScript
文章标签 递归

最近,我需要在 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]);  }}