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进行判定即可。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值