js扁平化对象

110 阅读1分钟

最近面试遇到一到这样的题目,扁平化处理对象,主要是递归处理解决,区分基础类型和引用类型。于是记录一下:

测试题:

const obj =   b: 1,  c: 2,  d: {    a: 1,    b: 2,    c: [{      aa: 1    }, 1, 2, 3]  }}
转变为如下值:
// 
{  b: 1,  c: 2,  'd.a': 1,  'd.b': 2,  'd.c.0.aa': 1,  'd.c.1': 1,  'd.c.2': 2,  'd.c.3': 3}

代码:

function flat(obj, flatObj, prefixKey = '') {  if(typeof obj === 'object') {    for(let key in obj) {      let curKey = !prefixKey ? key : `${prefixKey}.${key}`      flat(obj[key], flatObj, curKey)    }  } else {    flatObj[prefixKey] = obj  }}