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