多层嵌套的对象转换成一级对象

拇指一代
  • 290

{
a:{b:1,c:2},
d:3
}
想转换成
{
b:1,
c:2,
d:3
}

回复
阅读 3.2k
4 个回答
普拉斯强
  • 2.6k
function flattenObj(obj, result) {
    return Object.keys(obj).reduce((result, key) => {
        // 非`null`对象递归
        if(Object(obj[key]) === obj[key]) {
            return flattenObj(obj[key], result);
        }       
        result[key] = obj[key];
        return result;
    }, result || {})
}

// TEST
var a = {
    a:{b:1,c:2},
    d:3
};

flattenObj(a) // {b: 1, c: 2, d: 3}
function getResult (data, result = {}) {
  for (let key in data) {
    if (data[key] && typeof data[key] == 'object') {
      getResult(data[key], result)
    } else {
      result[key] = data[key]
    }
  }
  return result
}
function flatObject(target) {
    const result = {};
    
    for (let key in target) {
        const value = target[key];
        
        Object.assign(
            result,
            Object.prototype.toString.call(value) === '[object Object]'
                ? flatObject(value)
                : { [key]: value }
        );
    }
    
    return result;
}
宣传栏