Javascript对象进行扁平化处理

Javascript对象进行扁平化处理

笔主在经过多次的笔试中,发现经常会遇到对象扁平化处理的编程题,但是在笔试过程中,脑子一片空白,以至于没有平常心的去对待问题的本质。
扁平化处理简而言之就是对对象中的对象提取出来,放在一个对象里面,形象的说就是把儿子的后代当成自己的儿子。
实现原理是对对象进行遍历,如果值为对象,则进行递归调用,如果不为对象,将值推入res中。

var obj = {
    
    
  a:[1,2],
  b:2,
  c:{
    
    
    c:3,
    d:4,
    e:{
    
    
      e:5,
      f:6
    }
  }
}
function objFun(obj){
    
    
  var res = {
    
    }  //定义一个对象,用来存储结果
  function isObj(obj){
    
      //定义一个函数,用来对obj进行遍历
    for(var key in obj){
    
    
      if(Object.prototype.toString.call(obj[key]) == '[object Object]'){
    
     //如果值为对象,则进行递归
        isObj(obj[key]);  
      }else{
    
      //不为对象则将值添加给res
        res[key] = obj[key]
      }
    }
  }
  isObj(obj)  //调用函数
  return res  //返回结果
}
console.log(objFun(obj)); //{ a: [ 1, 2 ], b: 2, c: 3, d: 4, e: 5, f: 6 }

对数组的扁平化也是同理,如果要实现二合一,则调用函数前对参数进行判断,判断其为数组或是对象即可,如图上的objFun(obj),对obj进行判定即可。

猜你喜欢

转载自blog.csdn.net/weixin_45791692/article/details/124044138
今日推荐